第一關:算數運算符
1、編程要求:
在start-end
區域定義兩個變量a
和b
,然后使用上一章節學到的掃描儀(Scanner
)獲取程序輸入的數據並賦值給a
,b
變量,使程序能輸出如下效果:
2、測試效果:
我會對你編寫的代碼進行若干次測試:
第一次測試會輸入數據:10
,4
; 需要你的程序輸出: 兩數相加的結果為:14
兩數相減的結果為:6
兩數相乘的結果為:40
兩數相除的結果為:2
兩數取余數的結果為:2
第二次測試會輸入數據:3
,5
; 需要你的程序輸出: 兩數相加的結果為:8
兩數相減的結果為:-2
兩數相乘的結果為:15
兩數相除的結果為:0
兩數取余數的結果為:3
3、程序實現:
package step1; import java.util.Scanner; public class Cal { public static void main(String[] args) { /*********start*********/ Scanner sc= new Scanner(System.in); int a,b; System.out.print("請輸入第一個整數\n"); a=sc.nextInt(); System.out.print("請輸入第二個整數\n"); b=sc.nextInt(); System.out.println("兩數相加的結果為:"+(a+b)); System.out.println("兩數相減的結果為:"+(a-b)); System.out.println("兩數相乘的結果為:"+(a*b)); System.out.println("兩數相除的結果為:"+(a/b)); System.out.println("兩數取余數的結果為:"+(a%b)); sc.close(); /*********end*********/ } }
4、題目總結:
(1)注意自增自減運算符的位置,在變量前表示先執行自增或者自減操作,后將自增自減之后的值賦給左邊的新變量。在變量后則反之。
第二關:關系運算符
1、編程要求:
使用本關所學的關系運算符,在start-end
區域實現程序的輸出,預期的輸出請查看測試說明。
2、測試效果:
我會對你編寫的代碼進行若干次測試:
第一次測試會輸入數據:20
,34
; 需要你的程序輸出: a==b=false
a!=b=true
a>b=false
a<b=true
b>=a=true
b<=a=false
第二次測試會輸入數據:-8
,-18
; 需要你的程序輸出: a==b=false
a!=b=true
a>b=true
a<b=false
b>=a=false
b<=a=true
3、程序實現:
package step2; import java.util.Scanner; public class Relative { public static void main(String[] args) { Scanner sc=new Scanner(System.in); /*********start*********/ int a=sc.nextInt(); int b=sc.nextInt(); System.out.println("a==b="+(a==b)); System.out.println("a!=b="+(a!=b)); System.out.println("a>b="+(a>b)); System.out.println("a<b="+(a<b)); System.out.println("b>=a="+(b>a)); System.out.println("b<=a="+(b<a)); /*********end*********/ } }
4、題目總結:
(1)記憶小技巧:無論是大於等於還是小於等於,等號總在大於號或者小於號的右邊。
(2)關系運算符得到的都是布爾值。
第三關:邏輯運算符
1、編程要求:
目前程序的輸出不符合預期,使用本小節所學知識,在start-end
區域中修改代碼,實現程序預期的輸出,預期輸出請查看測試說明。
2、測試效果:
按照相關要求編寫程序后,我會對你的程序進行測試。
預期輸入:true
,false
,true
; 預期輸出: false
false
true
true
預期輸入:true
,false
,false
; 預期輸出: false
false
false
true
3、程序實現:
package step3; import java.util.Scanner; public class testLogic { public static void main(String[] args) { Scanner sc=new Scanner(System.in); boolean a=sc.nextBoolean(); boolean b=sc.nextBoolean(); boolean c=sc.nextBoolean(); /*********start *********/ System.out.println(!a); System.out.println(a && b); System.out.println( c || b ); System.out.println( a^b ); /*********end *********/ } }
4、題目總結
(1)& 和 &&區別:
& :無論左邊結果是什么,右邊都參與運算。
&&(短路):如果左邊為false,那么右邊不參數與運算。
(2)| 和|| 區別:
|:兩邊都運算。
||(短路):如果左邊為true,那么右邊不參與運算。
(3)邏輯運算符操作的都是boolean類型變量。
第四關:三元運算符
1、編程要求:
在start-end
區域中補充代碼,使用三元運算符判斷輸入的year
變量是否為閏年,為了完成判斷是否為閏年,你需要首先了解閏年的判斷公式是什么,在這里給出閏年的判斷公式如下:
1.年份能被400
整除。
2.
年份能被4
整除,但不能被100
整除。 所以,在這里你還需要注意邏輯關系運算符的運用。
2、測試效果:
測試輸入:2012
預期輸出:2012是否為閏年:true
測試輸入:2013
預期輸出:2013是否為閏年:false
3、程序實現:
package step4; import java.util.Scanner; public class TestYear { public static void main(String[] args) { Scanner sc=new Scanner(System.in); int year=sc.nextInt(); boolean result; /********start********/ result=((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) ? true : false; System.out.println(year + "年是否為閏年:" + result); /********end********/ } }
4、題目總結:
(1)注意三元運算符的運用格式:條件表達式 ? 條件為真返回的結果 : 條件為假返回的結果
(2)三元運算符有時可以代替if-else語句使用(三元運算符一定會有返回值,三元運算符的運算性能高於if-else語句,有些特定情況下只能使用三元運算符)
第五關:運算符的優先級
1、編程要求:
現在運行start-end
區域中的代碼,輸出結果和效果圖是不一致的,需要你修改Begin-End
區域內代碼,使你的程序輸出如下效果:
2、測試效果:
我會對你的程序進行若干次測試;
第一次輸入:10
,2
預期輸出: 24
2
28
第二次輸入:5
,3
預期輸出: 16
2
17
3、程序實現:
package step5; import java.util.Scanner; public class TestDemo5 { public static void main(String[] args) { Scanner sc=new Scanner(System.in); System.out.println("輸入:"); int m=sc.nextInt(); int n=sc.nextInt(); System.out.println("輸出:"); /*****start*****/ System.out.println( (m+n)*2 ); System.out.println( (m-n)%3 ); System.out.println((m-n)/2 + (m+n)*2); /*****end*****/ } }
4、題目總結:
(1)
(2)注意靈活運用括號,畢竟括號內的運算都是優先執行。
第六關:選擇自測題
1、選擇題答案:D B A C C A A