學習java第五天重點筆記:
1.a=100; b=100; c=200;
Java中按引用傳值,不是複製
2.方法:
方法有----名字,傳參,返回值
格式:【修飾符1 修飾符2 ...】返回值類型 方法名(形式參數列表){
Java語句;
}
3.集合(變長)參數
1) 每個方法參數列表中只能有一個變長參數。
2) 變長參數必須是該方法的最後一個參數。
Eg:static void method1 (int...i){
Java語句;
}
Static void method2 (float f, double d,int ...i){
Java語句;
}
示例代碼:
public class clong{
public static void main(String[] args){
method(1,2,3,4,2,3,4,2,3,1,4,5,7,5,2);
}
public static void method(int ...numbers){
for(int a:numbers)
System.out.print(a+" ");
System.out.println();
System.out.println(numbers.length);
}
}
4.遞歸:
遞歸必須要有遞歸出口。
Eg:利用遞歸計算1+2+。。。+100的和
public class root
{
public static void main(String[] args)
{
int s=add(100);
System.out.println(s);
}
public static int add(int n){
if(n==1)
return 1;
else return add(n-1)+n;
}
}
漢諾塔(hanoi)問題
public class hanoi{
public static void main(String[] s){
han(3,'A','B','C');
}
public static void han(int n,char x,char y,char z){
if(n==1)
System.out.println("\t"+x+"-->"+z);
else{
han(n-1,x,z,y);
System.out.println("\t"+x+"-->"+z);
han(n-1,y,x,z);
}
}
}
han(1,A,B,C)------A-->C
han(2,A,C,B)
A---->B han(1,C,A,B)-------C-->B
han(3,A, B, C)
A-->C
han(2,B,A,C)(同上)
5.方法重載:
方法名相同,方法所傳參數類型,參數個數不相同。
public class method
{
public static void main(String[] args)
{
method(15.3);
}
public static void method(int i){
System.out.println(" int "+i);
}
public static void method(float f){
System.out.println(" float "+f);
}
public static void method(double d){
System.out.println(" double "+d);
}
public static void method(double l){
System.out.println(" long "+l);
}
}
課堂練習:
1:題目:古典問題:有一對兔子,從出生後第3個月起每個月都生一對兔子,小兔子長到第四個月後每個月又生一對兔子,假如兔子都不死,問每個月的兔子總數爲多少?
public class rabbit
{
public static void main(String[] args)
{
int i=0;
math mymath = new math();
for(i=1;i<=20;i++)
System.out.println(mymath.f(i));
}
}
class math
{
public int f(int x)
{
if(x==1 || x==2)
return 1;
else
return f(x-1)+f(x-2);
}
}
2:判斷101-200之間有多少個素數,並輸出所有素數
public class sushu
{
public static void main(String[] args)
{
for(int i=101;i<=200;i++)
if(true==issushu(i))
System.out.print(i+" ");
}
static boolean issushu(int i){
for (int j=2;j<i/2; j++)
{
if(i%j==0)
return false;
}
return true;
}
}
3. 題目:打印出所有的 "水仙花數 ",所謂 "水仙花數 "是指一個三位數,其各位數字立方和等於該數本身。例如:153是一個 "水仙花數 ",因爲153=1的三次方+5的三次方+3的三次方。
1.程序分析:利用for循環控制100-999個數,每個數分解出個位,十位,百位。
public class flower
{
public static void main(String[] args)
{
water();
}
public static void water(){
for(int i=100;i<=999;i++)
{
int g=i%10;
int s=i%100/10;
int b=i/100;
if(i==g*g*g+s*s*s+b*b*b)
System.out.println(i+" ");
}
}
}