java入門基礎學習(三)

2020-08-10 07:37:08

(一)有返回值的方法

格式:public static 返回值數據型別 方法名(參數){
		方法體
		return 數據;
	}
注意:1.返回值數據型別非void,必須使用return
	 2.有返回值的方法,方法呼叫時,可以直接進行輸出
	 3.return的數據要和返回值數據型別保持一致(包含自動型別轉換)
	 4.return必須方法在最後
	 5.返回值數據型別是void,可以使用return(不能給上數據),通常情況下return;省略不寫
	 6.有返回值的方法中可以使用多個return,但是隻能有一個結果

(二)方法過載

相同功能性的方法,可以有不同的實現
條件:1.同一個類中
        2.方法名相同
        3.參數列表不同(數據型別/個數不同)
        4.和返回值無關

習題

一、填空題
1.Java中有兩種型別的選擇結構的控制語句,分別是if語句和 switch語句 。
2.在Java JDK1.7之前,switch只能支援byte、short、char、int或者其對應的封裝類以及Enum型別。在JDK1.7中又加入了 String 型別。
3.for回圈的語法格式是for (表達式1;表達式2;表達式3) {回圈體},其中在整個回圈過程中只執行一次的部分是 表達式1 。
4.在回圈結構中,如果想跳出回圈體,結束整個回圈結構可以使用 break; 語句。
5.____continue__語句用在回圈語句體中,用於終止某次回圈過程,即跳過回圈體中尚未執行的語句,接着進行下一次是否執行回圈的判定。即只結束本次回圈,而不是終止整個回圈的執行。
使用Math.random( )返迴帶正號的 double值,該值大於等於0.0且小於1.0。使用該函數生成[30,60]之間的隨機整數的語句是 30*Math.random()+30; 。
二、選擇題

  1. 以下程式碼的執行結果是( B )。(選擇一項)
	boolean m = false;
if(m = false){
	System.out.println("false");
}else{
	System.out.println("true");
}
A.	false
B.	true
C.	編譯錯誤
D.	無結果
  1. 分析如下Java程式碼,編譯執行的輸出結果是( A )。(選擇一項)
	public static void main(String[ ] args) {
		boolean a=true;
		boolean b=false;
		if (!(a&&b)) {
			System.out.print("!(a&&b)");
		}else if (!(a||b)) {
			System.out.println("!(a||b)");
		}else {
			System.out.println("ab");
		}
}

A !(a&&b)
B. !(a||b)
C. ab
D. !(a||b)ab
3. 下列選項中關於變數x的定義,( bD )可使以下switch語句編譯通過。(選擇二項)

	switch(x) {
    case 100 :
        System.out.println("One hundred");
        break;
    case 200 :              
        System.out.println("Two hundred");                 
        break;
    case 300 :
        System.out.println( "Three hundred");
        break;
    default :
        System.out.println( "default");    
}
A	double x = 100;
B.	char x = 100;
C.	String x = "100";
D.	int x = 100;
  1. 閱讀下列檔案定入的Java程式碼,其執行結果是( D )。(選擇一項)
public class Test {
	public static void main(String[] args) {
		char ch = 'c';
		switch (ch) {
		    case 'a':
			    System.out.print("a");		break;
		    case 'b':
			    System.out.print("ab");
		    case 'c':
			    System.out.print("c");
		    default:
			    System.out.print("d");
		}
	}
}
A	a
B.	b
C.	c
D.	cd
  1. 以下Java程式編譯執行後的輸出結果是( B )。(選擇一項)
	public class Test {
	public static void main(String[] args) {
		int i = 0, sum = 0;
		while (i <= 10) {
			sum += i;
			i++;
			if (i % 2 == 0)
				continue;
		}
		System.out.println(sum);
	}
}
A	0
B.	55
C.	50
D.	36
  1. 以下四個選項中和下面 下麪程式碼功能相同的是( b )。(選擇一項)
	int i = 1;
int sum = 0;
while (i <= 100) {
	if (i % 2 == 0) 
		sum = sum + i;
	i++;
}
A	for (int x =1; x<=100;x++){ sum=sum+x;}
B.	for (int x =0; x<=100;x+=2){ sum=sum+x;}
C.	for (int x =1; x<=100;x+=2){ sum=sum+x;}
D.	上述全對
  1. 以下do-while回圈程式碼的執行結果是( A )。(選擇一項)
int a=0;
int c=0;
do{
	--c;
	a=a-1;
}while(a>0);
System.out.println(a+"  "+c);

A. -1 -1
B. 死回圈
C. -1 -2
D. -1 0
8. while回圈和do-while回圈的區別是( D )。(選擇一項)

A.	沒有區別,這兩個結構在任何情況下效果一樣 
B.	while回圈比do-while回圈執行效率高
C.	while回圈是先回圈後判斷,所以回圈體至少被執行一次
D.	do-while回圈是先回圈後判斷,所以回圈體至少被執行一次
  1. 在Java中有如下程式碼,則編譯執行該類的輸出結果是( d )。(選擇一項)
public static void main(String[ ] args) {
		for(int i=0;i<10;i++){
			if (i%2!=0) {
                break;
}
			System.out.print(i);
		}
}
A	13578
B.	02468
C.	0123456789
D.	0
  1. 下面 下麪程式執行的結果是在螢幕上列印( b )次Java基礎班。(選擇一項)
	for(int  i=1;i<=10;i++){
	if (i<5)
		continue;
	System.out.println("Java基礎班");
}
A	5
B.	6
C.	7
D.	8
  1. 分析下面 下麪的Java多重回圈程式碼片段,編譯執行後的輸出結果是( D )。(選擇一項)
	for (int i = 0; i < 6; i++) {
	int k = ++i;
	while (k < 5) {
		System.out.print(i);
		break;
	}
}
A.	024
B.	02
C.	123
D.	13
  1. 給定如下Java程式碼,編譯執行的結果是( A )。(選擇一項)
	public class Test {	
	public static void main(String[] args) {
		int sum=0;
		for(int i=1;i<10;i++){
			do{
				i++;
				if(i%2!=0)
					sum+=i;
			}while(i<6);
		}
		System.out.println(sum);
	}
}
	
A	8
B.	15
C.	24
D.	什麼也不輸出
  1. Java中main方法的返回值是( D )。(選擇一項)

    A String
    B. int
    C. char
    D. void

  2. 在Java的程式類中如下方法定義正確的是( AD )。(選擇兩項)

    A public int ufTest(int num){
    int sum=num+100;
    return sum;
    }
    B. public String ufTest(int num){
    int sum=num+100;
    return sum;
    }
    C. public void ufTest(int num){
    int sum=num+100;
    return sum;
    }
    D. public float ufTest(int num){
    int sum=num+100;
    return sum;
    }

  3. 以下關於方法呼叫的程式碼的執行結果是( B )。(選擇一項)

	public class Test {
	public static void main(String args[]) {
		int i = 99;
		mb_operate(i);
		System.out.print(i + 100);
	}
	static void mb_operate(int i) {
		i += 100;
	}
}
A.	99 
B.	199
C.	299
D.	99100
  1. 下面 下麪( BD )方法是public void example(){…}的過載方法。(選擇二項)

    A private String example(){…}
    B. public int example(String str){…}
    C. public void example2(){…}
    D. public int example(int m,float f){…}

  2. 以下選項中新增到程式碼中橫線處會出現錯誤的是( BD )。(選擇二項)

	public class Test {
	public float aMethod(float a, float b) {
		return 0;	
	}
                                       
}

A public float aMethod(float a, float b, float c) {
return 0;
}
B. public float aMethod(float c, float d) {
return 0;
}
C. public int aMethod(int a, int b) {
return 0;
}
D. private int aMethod(float a, float b) {
return 0;
}
三、判斷題
1.if語句的條件表達式的結果都必須是boolean值。( t )
2.switch選擇語句是多分支選擇語句,只能處理等值條件判斷的情況,表達式可以是int型別、char型別,但不能是double,float型別。( t )
3.while回圈結構的特點是先回圈再判斷,回圈體至少執行一次。( x )
4.for回圈的語法格式是for (表達式1;表達式2;表達式3) {回圈體},其中三個表達式都可以省略。( t )
5.break語句可以出現在switch語句和回圈語句中。( t )
continue語句可以出現在switch語句和回圈語句中。( x )
6.多重回圈是指一個回圈體內又包含另一個完整的回圈結構。外層回圈變數變化一次,內層回圈變數要從頭到尾變化一遍。( T )
7.定義方法時的參數稱爲實在參數,呼叫方法時的參數稱爲形式參數。( X )
程式說明中的參數稱爲形式參數,呼叫語句中的參數稱爲實在參數。
8.呼叫方法時,要求實參和形參的個數相同,型別匹配。( T )
9.判斷方法過載的依據是方法名相同,參數不同。( T )
10.程式呼叫自身的程式設計技巧稱爲遞回。遞回的特點是程式設計簡單並且節省記憶體。( X)
11.任何可用遞回解決的問題也能使用回圈解決,遞回既花時間又耗記憶體,在要求高效能的情況下儘量避免使用遞回。( T )
四、簡答題
1.if多分支語句和switch語句的異同之處
答:相同點:他們都是用來處理多分支條件的結構。不同點:switch語句只能處理等值條件判斷的情況,而且條件只能是整型變數或字元型變數。 多重if選擇結構的限制,特別適合某個變數處於某個連續區間時的情況。
2.while和do-while語句的異同之處
答:do-.while回圈先執行一次再去判斷條件,也就是說不管滿不滿足條件,都會先執行一次,執行次數最少1次;while回圈必須先判斷條件,滿足了才執行,最少執行次數0次
3.break和continue語句的作用
答:break語句作用:1、可以用來從回圈體內跳出回圈體,即提前結束回圈,接着執行回圈下面 下麪的語句2、使流程跳出switch結構;continue語句作用:結束本次回圈,即忽略回圈體中continue語句下面 下麪尚未執行的語句,接着進行下一次是否執行回圈的判定。
4.在多重回圈中,如何在內層回圈中使用break跳出外層回圈。

5.方法過載的定義、作用和判斷依據

6.遞回的定義和優缺點
五、編碼題
1.列印九九乘法表
2.判斷1-100之間有多少個素數並輸出所有素數。(將判斷一個數是否是素數的功能提取成方法,在回圈中直接呼叫即可)
3.輸入三個班,每班10個學生的成績,求和並求平均分
4.編寫遞回演算法程式:一列數的規則如下: 1、1、2、3、5、8、13、21、34… 求數列的第40位數是多少。
5.列印出所有的"水仙花數",所謂"水仙花數"是指一個三位數,其各位數位立方和等於該數本身。例如:153是一個"水仙花數",因爲153=1的三次方+5的三次方+3的三次方。
6.定義方法:列印指定行和列的矩形
7.編寫Java程式,實現接收使用者輸入的正整數,輸出該數的階乘。要求:限制輸入的數據在1-10之間,無效數據進行提示,結束程式。要求使用遞回和回圈分別實現。輸出結果如:4!=123*4=24
8.輸入一個數,判斷是奇數還是偶數

public class TestNum {
	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		//輸入一個數
		System.out.println("請輸入你要判斷的數據:");
		int x = input.nextInt();
		//判斷一個數據是奇數還是偶數
		if(x%2 == 0) {
			System.out.println(x+"這個數據是偶數");
		}else {
			System.out.println(x+"這個數據是奇數");
		}
	}
}

9.根據成績輸出對應的等級,使用if多分支和switch語句分別實現。
a)A級 [90,100]
b)B級 [80,90)
c)C級 [70,80)
d)D級 [60,70)
e)E級 [0,60)

public class TestGrade1 {
	public static void main(String[] args) {
		// 給出分數
		Scanner  input  = new Scanner(System.in);
		System.out.println("請輸入一個分數");
		double score = input.nextDouble();
		// 根據分數,給出等級
		String grade;
		if (score >= 90) {
			grade = "A";
		} else if (score >= 80) {
			grade = "B";
		} else if (score >= 70) {
			grade = "C";
		} else if (score >= 60) {
			grade = "D";
		} else {
			grade = "E";
		}
		// 輸出等級
		System.out.println("score=" + score + ",grade=" + grade);
	}
}
public class TestGrade2 {
	public static void main(String[] args) {
		// 給出分數
		Scanner  input  = new Scanner(System.in);
		System.out.println("請輸入一個分數");
		int score = input.nextInt();			
		//根據分數,給出等級
		String grade="E";
		switch(score/10){
			case 10:
			case 9:grade="A";break;
			case 8:grade="B";break;
			case 7:grade="C";break;
			case 6:grade="D";break;
			default :grade="E";				
		}
		//輸出等級
		System.out.println("score="+score+",grade="+grade);
	}
}

10.判斷一個數是否是素數。

public class TestPrime {
	public static void main(String[] args) {
		// 輸入一個數
		Scanner input = new Scanner(System.in);
		System.out.println("請輸入一個數:");
		int n = input.nextInt();
		// 判斷是否是素數
		boolean flag = true;
		if (n == 1)
			flag = false;
		else {
			for (int i = 2; i < n; i++) {
				if (n % i== 0) {
					flag = false;
					break;
				}
			}
		}
		// 輸出結果
		if (flag) {
			System.out.println(n + "是素數");
		} else {
			System.out.println(n + "不是素數");
		}
	}
}

11.從鍵盤輸入一個班5個學生的分數,求和並輸出。

public class TestSum {
	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		//輸入總分並求和
		double sum = 0;
		for (int i = 0; i < 5; i++) {
			System.out.println("請輸入第"+(i+1)+"個學生的成績");			
			double  d = input.nextDouble();
			sum += d;
		}
		//輸出總分
		System.out.println("總分是"+sum);
	}
}

12.從鍵盤輸入某個十進制整數數,轉換成對應的二進制整數並輸出。

public class Test10to2_1 {
	public static void main(String [] args){
		//給出一個十進制數
		int num2 =6;
		//轉換
		int num = num2;
		String str="";
		do{
			//除以2得到商
			int div = num/2;
			//得到餘數作爲二進制位
			int mod = num%2;
			str = mod + str;			
			//商作爲被除數
			num = div;
		}while(num!=0);//被除數不是零		
		//輸出二進制數
		System.out.println(num2+"------>"+str);		
	}
}

13.根據考試成績輸出對應的禮物,90分以上爸爸給買電腦,80分以上爸爸給買手機, 60分以上爸爸請吃一頓大餐,60分以下爸爸給買學習資料。
要求:該題使用多重if完成

public class Test 1{
	public static void main(String[] args) {
		int score = 80;
		if (score >= 90) {
			System.out.println("電腦");
		} else if (score >= 80) {
			System.out.println("手機");
		} else if (score >= 60) {
			System.out.println("大餐");
		} else {
			System.out.println("學習資料");
		}
	}
}	

14.請根據英文單詞的第一個字母判斷星期幾,如果第一個字母是一樣的,則繼續判斷第二個字母。例如如果第一個字母是S,則繼續判斷第二個字母,如果第二個字母是a,則輸出「星期六」。星期的英文單詞如下表所示。
在这里插入图片描述

public class Test2{
	public static void main(String[] args) {
		char i, j;
		System.out.println("please enter the first letter:");
		Scanner input = new Scanner(System.in);
		String str = "";
		str = input.next().toLowerCase();
		// 轉換成字串
		i = str.charAt(0);
		switch (i) {
			case 'm':
				System.out.println("Monday\n");	break;
			case 'w':
				System.out.println("Wednesday\n");break;
			case 'f':
				System.out.println("Friday\n");	break;
			case 't':
				System.out.println("please enter the next letter:");
				str = input.next().toLowerCase();
				j = str.charAt(0);
				if (j == 'u')
					System.out.println("Tuesday\n");
				else if (j == 'h')
					System.out.println("Thursday\n");
				else 
					System.out.println("error\n");
				break;
			case 's':
				System.out.println("please enter the next letter:");
				// 轉換成字串
				str = input.next().toLowerCase();
				j = str.charAt(0);
				if (j == 'a')
					System.out.println("Saturday\n");
				else if (j == 'u')
					System.out.println("Sunday\n");
				else 
					System.out.println("error\n");
				break;
			default:
				System.out.println("error\n");
				break;
		}
	}
}

15.輸入一批整數,使用回圈求出最大值與最小值,輸入0時結束。

public class Test 3{
	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		int max = 0, min = 0;
		int nums = 1;
		//輸入第一個數,指定它是最大值和最小值
		System.out.println("請輸入1個數:");
		nums = input.nextInt();
		max = nums;
		min = nums;
		//依次輸入其他數位,並判斷是否是最大值和最小值
		for (int i = 2; nums != 0; i++) {
			System.out.println("請輸入" +i + "個數:");
			nums = input.nextInt();
			if (nums != 0) {
				if (nums > max) {
					max = nums;
				}
				if (nums < min) {
					min = nums;
				}
			}
		}
		//輸出最大值和最小值
		System.out.println("最大值爲:" + max);
		System.out.println("最小值爲:" + min);
	}
}

16.給20塊錢買可樂,每瓶可樂3塊錢,喝完之後退瓶子可以換回1塊錢,問最多可以喝到多少瓶可樂。

public class Test4 {
	public static void main(String[] args) {
		int money = 20, price = 3;  
		// temp表示每一次購買的可樂瓶數
		int temp = 0;
		// change表示每次購買完可樂剩下的錢
		int change = 0;
		// sum表示總的可樂瓶數
		int sum = 0;   
		// 如果錢數大於可樂價格
		while (money >= price) {
			// 購買可樂
			temp = money / price; 
			// 總可樂瓶數增加
			sum += temp; 
			// 計算買可樂剩下的錢
			change = money % price; 
			// 兌換可樂瓶子,計算剩餘的總錢數
			money = temp + change; 
		}
		// 輸出結果
		System.out.println(sum); 
	}
}