日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

03_运算符、键盘录入、流程控制

發(fā)布時間:2024/4/17 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 03_运算符、键盘录入、流程控制 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1:運算符(掌握)
2:鍵盤錄入(掌握)
3:流程控制語句
4:if語句(掌握)

1:運算符(掌握)
?(1)算術運算符
??A:+,-,*,/,%,++,--
??B:+的用法
???a:加法
???b:正號
???c:字符串連接符
??C:/和%的區(qū)別
???數據做除法操作的時候,/取得是商,%取得是余數
??D:++和--的用法
???a:他們的作用是自增或者自減
???b:使用
????**單獨使用
?????放在操作數據的前面和后面效果一樣。
?????a++或者++a效果一樣。
????**參與操作使用
?????放在操作數的前面:先自增或者自減,再參與操作
??????int a = 10;
??????int b = ++a;
?????放在操作數的后面:先參與操作,再自增或者自減
??????int a = 10;
??????int b = a++;

1 /* 2 運算符: 3 就是對常量和變量進行操作的符號。 4 5 分類:算術運算符,賦值運算符,比較運算符,邏輯運算符,位運算符,三目運算符 6 7 算術運算符: 8 +,-,*,/,%,++,-- 9 10 注意事項: 11 A:整數相除只能得到整數。如果想得到小數,必須把數據變化為浮點數類型 12 B:/獲取的是除法操作的商,%獲取的是除法操作的余數 13 */ 14 15 class OperatorDemo { 16 public static void main(String[] args) { 17 //定義變量 18 int x = 3; //把3賦值給int類型的變量x 19 int y = 4; 20 21 System.out.println(x+y); 22 System.out.println(x-y); 23 System.out.println(x*y); 24 System.out.println(x/y); //整數相除只能得到整數 25 26 //我就想得到小數,該腫么辦呢? 27 //只需要把操作的數據中任意的一個數據變?yōu)楦↑c數 28 System.out.println(x*1.0/y); 29 30 //%的應用 31 System.out.println(x%y); //得到的是余數 32 } 33 }


++,--運算符的使用:

1 /* 2 ++,--運算符的使用: 3 單獨使用: 4 放在操作數的前面和后面效果一樣。(這種用法是我們比較常見的) 5 參與運算使用: 6 放在操作數的前面,先自增或者自減,然后再參與運算。 7 放在操作數的后面,先參與運算,再自增或者自減。 8 9 作用:就是對變量進行自增1或者自減1。 10 */ 11 class OperatorDemo2 { 12 public static void main(String[] args) { 13 //定義兩個變量 14 int x = 3; 15 int y = 4; 16 17 //字符串的拼接 18 //System.out.println("x:"+x); 19 //System.out.println("y:"+y); 20 21 System.out.println("x:"+x+",y:"+y); 22 23 //單獨使用 24 //x++; 25 //y--; 26 ++x; 27 --y; 28 //System.out.println(x); 29 System.out.println("x:"+x+",y:"+y); 30 31 //意外的類型,常量是不可以這樣做的 32 //System.out.println(10++); 33 34 System.out.println("-------------------"); 35 //參與運算使用 36 int a = 3; 37 int b = 4; 38 39 //int c = a++; 40 //int d = b--; 41 42 int c = ++a; 43 int d = --b; 44 45 System.out.println("a:"+a); //4, 4 46 System.out.println("b:"+b); //3, 3 47 System.out.println("c:"+c); //3, 4 48 System.out.println("d:"+d); //4, 3 49 } 50 }

+的用法:

1 /* 2 +的用法: 3 A:加法 4 B:正號 5 C:字符串連接符 6 */ 7 class OperatorDemo3 { 8 public static void main(String[] args) { 9 //加法 10 System.out.println(3+4); 11 12 //正號 13 System.out.println(+4); 14 15 System.out.println('a'); 16 System.out.println('a'+1); //這里是加法 17 18 //字符串連接符 19 System.out.println("hello"+'a'+1); 20 System.out.println('a'+1+"hello"); 21 } 22 }


++,--面試題:

1 /* 2 ++,--的練習題 3 4 第一題: 5 int a = 10; 6 int b = 10; 7 int c = 10; 8 9 a = b++; 10 c = --a; 11 b = ++a; 12 a = c--; 13 請分別計算出a,b,c的值 14 15 第二題: 16 int x = 4; 17 int y = (x++)+(++x)+(x*10); 18 請分別計算出x,y的值 19 */ 20 class OperatorTest { 21 public static void main(String[] args) { 22 int a = 10; 23 int b = 10; 24 int c = 10; 25 26 a = b++; //a=10,b=11,c=10 27 c = --a; //a=9,b=11,c=9 28 b = ++a; //a=10,b=10,c=9 29 a = c--; //a=9,b=10,c=8 30 31 System.out.println("a:"+a); 32 System.out.println("b:"+b); 33 System.out.println("c:"+c); 34 System.out.println("--------------"); 35 36 int x = 4; 37 int y = (x++)+(++x)+(x*10); 38 //4+6+60 39 //x=5,6 40 41 System.out.println("x:"+x); 42 System.out.println("y:"+y); 43 } 44 }

(2)賦值運算符
??A:=,+=,-=,*=,/=,%=等
??B:=叫做賦值運算符,也是最基本的賦值運算符
???int x = 10; 把10賦值給int類型的變量x。
??C:擴展的賦值運算符的特點
???隱含了自動強制轉換。
???
???面試題:
????short s = 1;
????s = s + 1;
????
????short s = 1;
????s += 1;
????請問上面的代碼哪個有問題?

1 /* 2 賦值運算符: 3 基本的賦值運算符:= 4 把=右邊的數據賦值給左邊。 5 6 擴展的賦值運算符:+=,-=,*=,/=,%= 7 += 把左邊和右邊做加法,然后賦值給左邊。 8 */ 9 class OperatorDemo { 10 public static void main(String[] args) { 11 //定義一個變量 12 int x = 10; 13 14 //其他用法 15 int a,b; 16 a = b = 10; 17 System.out.println(a); 18 System.out.println(b); 19 System.out.println("-----------"); 20 21 //定義一個變量 22 int y = 10; 23 24 y += 20; 25 26 System.out.println(y); 27 28 } 29 }

面試題:

1 /* 2 面試題: 3 short s=1;s = s+1; 4 5 short s=1;s+=1; 6 上面兩個代碼有沒有問題,如果有,那里有問題。 7 8 為什么第二個木有問題呢? 9 擴展的賦值運算符其實隱含了一個強制類型轉換。 10 11 s += 1; 12 不是等價于 s = s + 1; 13 而是等價于 s = (s的數據類型)(s + 1); 14 */ 15 class OperatorTest { 16 public static void main(String[] args) { 17 //short s = 1; 18 //s = s + 1; 19 //System.out.println(s); 20 21 short s = 1; 22 s += 1; //好像是 s = s + 1; 23 System.out.println(s); 24 } 25 }

?(3)比較運算符
??A:==,!=,>,>=,<,<=
??B:無論運算符兩端簡單還是復雜最終結果是boolean類型。
??C:千萬不要把==寫成了=

?

1 /* 2 比較運算符: 3 ==,!=,>,>=,<,<= 4 5 特點: 6 無論你的操作是簡單還是復雜,結果是boolean類型。 7 8 注意事項: 9 "=="不能寫成"="。 10 */ 11 class OperatorDemo { 12 public static void main(String[] args) { 13 int x = 3; 14 int y = 4; 15 int z = 3; 16 17 System.out.println(x == y); 18 System.out.println(x == z); 19 System.out.println((x+y) == (x+z)); 20 System.out.println("------------"); 21 22 System.out.println(x != y); 23 System.out.println(x > y); 24 System.out.println(x >= y); 25 System.out.println(x < y); 26 System.out.println(x <= y); 27 System.out.println("------------"); 28 29 int a = 10; 30 int b = 20; 31 32 //boolean flag = (a == b); 33 //boolean flag = (a = b); //這個是有問題的,不兼容的類型 34 //System.out.println(flag); 35 36 int c = (a = b); //把b賦值給a,然后把a留下來 37 System.out.println(c); 38 } 39 }

?(4)邏輯運算符
??A:&,|,^,!,&&,||
??B:邏輯運算符用于連接boolean類型的式子
??C:結論
???&:有false則false
???|:有true則true
???^:相同則false,不同則true。
????情侶關系。
???!:非true則false,非false則true
???
???&&:結果和&是一樣的,只不過有短路效果。左邊是false,右邊不執(zhí)行。
???||:結果和|是一樣的,只不過有短路效果。左邊是true,右邊不執(zhí)行。

1 /* 2 邏輯運算符: 3 &,|,^,! 4 &&,|| 5 特點: 6 邏輯運算符一般用于連接boolean類型的表達式或者值 7 8 表達式:就是用運算符把常量或者變量連接起來的符合java語法的式子。 9 算術表達式:a + b 10 比較表達式:a == b 11 12 結論: 13 &邏輯與:有false則false 14 |邏輯或:有true則true 15 ^邏輯異或:相同為false,不同為true. 16 !邏輯非:非false則true,非true則false 17 特點:偶數個不改變本身。 18 */ 19 class OperatorDemo { 20 public static void main (String [] args){ 21 int a = 3; 22 int b = 4; 23 int c = 5; 24 25 //&邏輯與 26 System.out.println((a > b) & (a > c)); //false & false =false 27 System.out.println((a > b) & (a < c)); //false & true =false 28 System.out.println((a < b) & (a > c)); //true & false =false 29 System.out.println((a < b) & (a < c)); //true & true =true 30 System.out.println("----------------"); 31 32 //|邏輯或 33 System.out.println((a > b) | (a > c)); //false | false =false 34 System.out.println((a > b) | (a < c)); //false | true =true 35 System.out.println((a < b) | (a > c)); //true | false =true 36 System.out.println((a < b) | (a < c)); //true | true =true 37 System.out.println("----------------"); 38 39 //^邏輯異或 40 System.out.println((a > b) ^ (a > c)); //false ^ false =false 41 System.out.println((a > b) ^ (a < c)); //false ^ true =true 42 System.out.println((a < b) ^ (a > c)); //true ^ false =true 43 System.out.println((a < b) ^ (a < c)); //true ^ true =false 44 System.out.println("----------------"); 45 46 //!邏輯非 47 System.out.println(!(a > b)); //!false = true 48 System.out.println(!(a < c)); //!true =false 49 System.out.println(!!(a < c)); //!!true =true 50 System.out.println(!!!(a < c)); //!!!true =false 51 System.out.println("----------------"); 52 } 53 54 }


&&與&以及 ||與|的區(qū)別:

1 /* 2 &&和&的區(qū)別? 同理||和|的區(qū)別 3 A:最終結果一樣 4 B:&&具有短路效果。左邊是false右邊不執(zhí)行 5 6 開發(fā)中常用的邏輯運算符: 7 &&,||,! 8 9 10 */ 11 class OperatorDemo2 { 12 public static void main (String [] args){ 13 int a = 3; 14 int b = 4; 15 int c = 5; 16 17 //&&雙與 18 System.out.println((a > b) && (a > c)); //false & false =false 19 System.out.println((a > b) && (a < c)); //false & true =false 20 System.out.println((a < b) && (a > c)); //true & false =false 21 System.out.println((a < b) && (a < c)); //true & true =true 22 System.out.println("----------------"); 23 24 //||邏輯或 25 System.out.println((a > b) || (a > c)); //false || false =false 26 System.out.println((a > b) || (a < c)); //false || true =true 27 System.out.println((a < b) || (a > c)); //true || false =true 28 System.out.println((a < b) || (a < c)); //true ||true =true 29 System.out.println("----------------"); 30 31 int x = 3; 32 int y = 4; 33 34 //boolean b1 = ((x++ == 3) & (y++ == 4)); 35 //boolean b1 = ((x++ == 3) && (y++ == 4); 36 //boolean b1 = ((++x == 3) & (++y == 4)); //4 5 false 37 boolean b1 = ((++x == 3) && (++y == 4)); //4 4 false 38 System.out.println("x:"+x); 39 System.out.println("y:"+y); 40 System.out.println(b1); 41 42 } 43 }

(5)位運算符(了解)
??A:^的特殊用法
???一個數據針對另一個數據位異或兩次,該數不變
??B:面試題
???a:請實現兩個變量的交換
????**采用第三方變量
????**用位異或運算符
?????左邊a,b,a
?????右邊a^b
???b:請用最有效率的方式計算出2乘以8的結果
????2<<3

1 /* 2 位運算符: 3 &,|,^,~ 4 <<,>>,>>> 5 6 注意: 7 要做位運算,首先要把數據轉換為二進制。 8 */ 9 class OperatorDemo { 10 public static void main(String[] args) { 11 //&,|,^,~ 12 13 int a = 3; 14 int b = 4; 15 16 System.out.println(3 & 4); 17 System.out.println(3 | 4); 18 System.out.println(3 ^ 4); 19 System.out.println(~3); 20 } 21 } 22 /* 23 分析:因為是位運算,所以我們必須先把數據換算成二進制。 24 25 3的二進制:11 26 00000000 00000000 00000000 00000011 27 4的二進制:100 28 00000000 00000000 00000000 00000100 29 30 &位與運算:有0則0。 31 00000000 00000000 00000000 00000011 32 &00000000 00000000 00000000 00000100 33 ----------------------------------- 34 00000000 00000000 00000000 00000000 35 結果是:0 36 37 |位或運算:有1則1。 38 00000000 00000000 00000000 00000011 39 |00000000 00000000 00000000 00000100 40 ----------------------------------- 41 00000000 00000000 00000000 00000111 42 結果是:7 43 44 ^位異或運算:相同則0,不同則1。 45 00000000 00000000 00000000 00000011 46 &00000000 00000000 00000000 00000100 47 ----------------------------------- 48 00000000 00000000 00000000 00000111 49 結果是:7 50 51 ~按位取反運算符:0變1,1變0 52 00000000 00000000 00000000 00000011 53 ~11111111 11111111 11111111 11111100 (補碼) 54 55 補碼:11111111 11111111 11111111 11111100 56 反碼:11111111 11111111 11111111 11111011 57 原碼:10000000 00000000 00000000 00000100 58 結果是:-4 59 */


^運算符的特點:

1 /* 2 ^的特點:一個數據對另一個數據位異或兩次,該數本身不變。 3 */ 4 class OperatorDemo2 { 5 public static void main(String[] args) { 6 int a = 10; 7 int b = 20; 8 9 System.out.println(a ^ b ^ b); //10 10 System.out.println(a ^ b ^ a); //20 11 } 12 }


移位運算符:

1 /* 2 <<:左移 左邊最高位丟棄,右邊補齊0 3 >>:右移 最高位是0,左邊補齊0;最高為是1,左邊補齊1 4 >>>:無符號右移 無論最高位是0還是1,左邊補齊0 5 6 面試題: 7 請用最有效率的方式寫出計算2乘以8的結果? 8 2 * 8 9 10 2 << 3 11 12 */ 13 class OperatorDemo3 { 14 public static void main(String[] args) { 15 //<< 把<<左邊的數據乘以2的移動次冪 16 System.out.println(3 << 2); //3*2^2 = 3*4 = 12; 17 18 //>> 把>>左邊的數據除以2的移動次冪 19 System.out.println(24 >> 2); //24 / 2^2 = 24 / 4 = 6 20 System.out.println(24 >>> 2); 21 22 System.out.println(-24 >> 2); 23 System.out.println(-24 >>> 2); 24 } 25 } 26 /* 27 計算出3的二進制:11 28 00000000 00000000 00000000 00000011 29 (00)000000 00000000 00000000 0000001100 30 31 >>的移動: 32 計算出24的二進制:11000 33 原碼:10000000 00000000 00000000 00011000 34 反碼:11111111 11111111 11111111 11100111 35 補碼:11111111 11111111 11111111 11101000 36 37 11111111 11111111 11111111 11101000 38 1111111111 11111111 11111111 111010(00) 補碼 39 40 補碼:1111111111 11111111 11111111 111010 41 反碼:1111111111 11111111 11111111 111001 42 原碼:1000000000 00000000 00000000 000110 43 44 結果:-6 45 46 >>>的移動: 47 計算出24的二進制:11000 48 原碼:10000000 00000000 00000000 00011000 49 反碼:11111111 11111111 11111111 11100111 50 補碼:11111111 11111111 11111111 11101000 51 52 11111111 11111111 11111111 11101000 53 0011111111 11111111 11111111 111010(00) 54 55 結果:1073741818 56 */

兩個數交換:

1 /* 2 面試題: 3 請自己實現兩個整數變量的交換 4 注意:以后講課的過程中,我沒有明確指定數據的類型,默認int類型。 5 */ 6 class OperatorTest { 7 public static void main(String[] args) { 8 int a = 10; 9 int b = 20; 10 11 System.out.println("a:"+a+",b:"+b); 12 13 //方式1:使用第三方變量(開發(fā)中用的) 14 /* 15 int c = a; 16 a = b; 17 b = c; 18 System.out.println("a:"+a+",b:"+b); 19 System.out.println("------------"); 20 */ 21 22 //方式2:用位異或實現(面試用) 23 //左邊:a,b,a 24 //右邊:a ^ b 25 /* 26 a = a ^ b; 27 b = a ^ b; //a ^ b ^ b = a 28 a = a ^ b; //a ^ b ^ a = b 29 System.out.println("a:"+a+",b:"+b); 30 */ 31 32 //方式3:用變量相加的做法 33 /* 34 a = a + b; //a=30 35 b = a - b; //b=10 36 a = a - b; //a=20 37 System.out.println("a:"+a+",b:"+b); 38 */ 39 40 //方式4:一句話搞定 41 b = (a+b) - (a=b); //b=30-20=10,a=20 42 System.out.println("a:"+a+",b:"+b); 43 } 44 }

?

?

(6)三元運算符
??A:格式
???比較表達式?表達式1:表達式2;
??B:執(zhí)行流程:
???首先計算比較表達式的值,看是true還是false。
???如果是true,表達式1就是結果。
???如果是false,表達式2就是結果。
??C:案例:
???a:比較兩個數據是否相等
???b:獲取兩個數據中的最大值
???c:獲取三個數據中的最大值

1 /* 2 單目運算符:~3 3 雙目運算符:3 + 4 4 5 三目運算符: 6 格式:比較表達式?表達式1:表達式2; 7 8 比較表達式:結果是一個boolean類型。 9 10 執(zhí)行流程: 11 根據比較表達式的計算返回一個true或者false。 12 如果是true,就把表達式1作為結果。 13 如果是false,就把表達式2作為結果。 14 */ 15 class OperatorDemo { 16 public static void main(String[] args) { 17 int x = 100; 18 int y = 200; 19 20 int z = ((x > y)? x: y); 21 22 //int z = ((x < y)? x: y); 23 24 //int z = ((x == y)? x: y); 25 26 //報錯 27 //int z = ((x = y)? x : y); 28 29 System.out.println("z:"+z); 30 } 31 }

練習:

1 /* 2 練習: 3 獲取兩個整數中的最大值 4 獲取三個整數中的最大值 5 比較兩個整數是否相同 6 */ 7 class OperatorTest { 8 public static void main(String[] args) { 9 //獲取兩個整數中的最大值 10 int x = 100; 11 int y = 200; 12 13 int max = (x > y? x: y); 14 System.out.println("max:"+max); 15 System.out.println("--------"); 16 17 //獲取三個整數中的最大值 18 int a = 10; 19 int b = 30; 20 int c = 20; 21 22 //分兩步: 23 //A:先比較a,b的最大值 24 //B:拿a,b的最大值在和c進行比較 25 int temp = ((a > b)? a: b); 26 //System.out.println(temp); 27 int max1 = (temp > c? temp: c); 28 System.out.println("max1:"+max1); 29 30 //一步搞定 31 //int max2 = (a > b)?((a > c)? a: c):((b > c)? b: c); 32 //這種做法不推薦。 33 //int max2 = a > b?a > c? a: c:b > c? b: c; 34 //System.out.println("max2:"+max2); 35 System.out.println("--------"); 36 37 //比較兩個整數是否相同 38 int m = 100; 39 int n = 200; 40 41 //boolean flag = (m == n)? true: false; 42 boolean flag = (m == n); 43 System.out.println(flag); 44 } 45 }

2:鍵盤錄入(掌握)
?(1)實際開發(fā)中,數據是變化的,為了提高程序的靈活性,我們加入鍵盤錄入數據。
?(2)如何實現呢?目前就記住
??A:導包
???import java.util.Scanner;
???位置:在class的上邊
??B:創(chuàng)建對象
???Scanner sc = new Scanner(System.in);
??C:獲取數據
???int x = sc.nextInt();
?(3)把三元運算符的案例加入鍵盤錄入改進。

1 /* 2 為了讓程序的數據更符合開發(fā)的數據,我們就加入了鍵盤錄入。 3 讓程序更靈活一下。 4 5 那么,我們如何實現鍵盤數據的錄入呢? 6 A:導包 7 格式: 8 import java.util.Scanner; 9 位置: 10 在class上面。 11 B:創(chuàng)建鍵盤錄入對象 12 格式: 13 Scanner sc = new Scanner(System.in); 14 C:通過對象獲取數據 15 格式: 16 int x = sc.nextInt(); 17 */ 18 import java.util.Scanner; 19 20 class ScannerDemo { 21 public static void main(String[] args) { 22 //創(chuàng)建鍵盤錄入數據對象 23 Scanner sc = new Scanner(System.in); 24 25 System.out.println("請你輸入一個數據:"); 26 int x = sc.nextInt(); 27 28 System.out.println("你輸入的數據是:"+x); 29 } 30 }

鍵盤錄入練習(一):

/*鍵盤錄入練習:鍵盤錄入兩個數據,并對這兩個數據求和,輸出其結果 */ import java.util.Scanner;class ScannerTest {public static void main(String[] args) {//鍵盤錄入兩個數據,并對這兩個數據求和,輸出其結果//創(chuàng)建鍵盤錄入對象Scanner sc = new Scanner(System.in);System.out.println("請輸入第一個數據:");int x = sc.nextInt();System.out.println("請輸入第二個數據:");int y = sc.nextInt();//把鍵盤錄入的數據進行相加即可int sum = (x + y);System.out.println("sum:"+sum);} }

鍵盤錄入練習(二):

1 /* 2 鍵盤錄入練習:鍵盤錄入兩個數據,獲取這兩個數據中的最大值 3 */ 4 5 import java.util.Scanner; 6 7 class ScannerTest2 { 8 public static void main(String[] args) { 9 //創(chuàng)建鍵盤錄入對象 10 Scanner sc = new Scanner(System.in); 11 12 System.out.println("請輸入第一個數據:"); 13 int a = sc.nextInt(); 14 15 System.out.println("請輸入第二個數據:"); 16 int b = sc.nextInt(); 17 18 //獲取這兩個數據中的最大值 19 int max = (a > b? a: b); 20 System.out.println("max:"+max); 21 } 22 }


鍵盤練習(三):

1 /* 2 練習: 3 鍵盤錄入三個數據,獲取這三個數據中的最大值 4 鍵盤錄入兩個數據,比較這兩個數據是否相等 5 */ 6 import java.util.Scanner; 7 8 class ScannerTest3 { 9 public static void main(String[] args) { 10 //鍵盤錄入三個數據,獲取這三個數據中的最大值 11 12 //創(chuàng)建鍵盤錄入對象 13 Scanner sc = new Scanner(System.in); 14 15 System.out.println("請輸入第一個數據:"); 16 int a = sc.nextInt(); 17 18 System.out.println("請輸入第二個數據:"); 19 int b = sc.nextInt(); 20 21 System.out.println("請輸入第三個數據:"); 22 int c = sc.nextInt(); 23 24 //獲取這三個數據中的最大值 25 int temp = ((a > b)? a: b); 26 int max = (temp > c? temp : c); 27 System.out.println("max:"+max); 28 System.out.println("------------------"); 29 30 //鍵盤錄入兩個數據 31 System.out.println("請輸入第一個數據:"); 32 int x = sc.nextInt(); 33 34 System.out.println("請輸入第二個數據:"); 35 int y = sc.nextInt(); 36 37 //比較這兩個數據是否相等 38 boolean flag = (x == y); 39 System.out.println("flag:"+flag); 40 } 41 }


3:流程控制語句
?(1)順序結構 從上往下,依次執(zhí)行
?(2)選擇結構?按照不同的選擇,執(zhí)行不同的代碼
?(3)循環(huán)結構 做一些重復的代碼

1 /* 2 流程控制語句:可以控制程序的執(zhí)行流程。 3 4 分類: 5 順序結構 6 選擇結構 7 循環(huán)結構 8 9 順序結構: 10 從上往下,依次執(zhí)行。 11 */ 12 class ShunXuJieGouDemo { 13 public static void main(String[] args) { 14 System.out.println("程序開始了"); 15 16 System.out.println("我愛Java"); 17 18 System.out.println("程序結束了"); 19 } 20 }

4:if語句(掌握)
?(1)三種格式
??A:格式1
???if(比較表達式) {
????語句體;
???}
???
???執(zhí)行流程:
????判斷比較表達式的值,看是true還是false
????如果是true,就執(zhí)行語句體
????如果是false,就不執(zhí)行語句體
??
??B:格式2
???if(比較表達式) {
????語句體1;
???}else {
????語句體2;
???}
???
???執(zhí)行流程:
????判斷比較表達式的值,看是true還是false
????如果是true,就執(zhí)行語句體1
????如果是false,就執(zhí)行語句體2
????
??C:格式3
???if(比較表達式1) {
????語句體1;
???}else if(比較表達式2){
????語句體2;
???}
???...
???else {
????語句體n+1;
???}
???
???執(zhí)行流程:
????判斷比較表達式1的值,看是true還是false
????如果是true,就執(zhí)行語句體1
????如果是false,就繼續(xù)判斷比較表達式2的值,看是true還是false
????如果是true,就執(zhí)行語句體2
????如果是false,就繼續(xù)判斷比較表達式3的值,看是true還是false
????...
????如果都不滿足,就執(zhí)行語句體n+1
?(2)注意事項
??A:比較表達式無論簡單還是復雜,結果是boolean類型
??B:if語句控制的語句體如果是一條語句,是可以省略大括號的;如果是多條,不能省略。
???建議:永遠不要省略。
??C:一般來說,有左大括號,就沒有分號,有分號,就沒有左大括號。
??D:else后面如果沒有if,是不會出現比較表達式的。
??E:三種if語句其實都是一個語句,只要有一個執(zhí)行,其他的就不再執(zhí)行。
?(3)案例:
??A:比較兩個數是否相等
??B:獲取兩個數中的最大值
??C:獲取三個數中的最大值(if語句的嵌套)
??D:根據成績輸出對應的等級
??E:根據月份,輸出對應的季節(jié)
??F:根據x計算對應y的值并輸出
?(4)三元運算符和if語句第二種格式的關系
??所有的三元運算符能夠實現的,if語句的第二種格式都能實現。
??反之不成立。
??
??如果if語句第二種格式控制的語句體是輸出語句,就不可以。
??因為三元運算符是一個運算符,必須要有一個結果返回,不能是一個輸出語句。

1 /* 2 選擇結構: 3 if語句 4 switch語句 5 6 if語句: 7 格式1 8 格式2 9 格式3 10 11 if語句的格式: 12 if(比較表達式) { 13 語句體; 14 } 15 16 執(zhí)行流程: 17 先計算比較表達式的值,看其返回值是true還是false。 18 如果是true,就執(zhí)行語句體; 19 如果是false,就不執(zhí)行語句體; 20 */ 21 class IfDemo { 22 public static void main(String[] args) { 23 int x = 10; 24 25 if(x == 10) { 26 System.out.println("x等于10"); 27 } 28 29 if(x == 20) { 30 System.out.println("x等于20"); 31 } 32 33 System.out.println("over"); 34 } 35 }

if語句注意事項:

1 /* 2 if語句的注意事項: 3 A:比較表達式無論簡單還是復雜,結果必須是boolean類型 4 B:if語句控制的語句體如果是一條語句,大括號可以省略; 5 如果是多條語句,就不能省略。建議永遠不要省略。 6 C:一般來說:有左大括號就沒有分號,有分號就沒有左大括號 7 */ 8 class IfDemo2 { 9 public static void main(String[] args) { 10 int x = 10; 11 12 if(x == 10) { 13 System.out.println("x等于10"); 14 } 15 16 if((x > 5) || (x == 10)) { 17 System.out.println("x大于或者等于10"); 18 } 19 System.out.println("-------------------"); 20 21 int a = 100; 22 23 /* 24 if(a == 100) { 25 System.out.println("a的值是100"); 26 } 27 */ 28 29 if(a != 100) { 30 System.out.println("a的值是100"); 31 System.out.println("over"); 32 } 33 System.out.println("-------------------"); 34 35 int b = 100; 36 if(b != 100); //這里其實是有語句體的,只不過是空語句體。 37 38 //代碼塊 39 { 40 System.out.println("b的值是100"); 41 System.out.println("over"); 42 } 43 } 44 }

if語句格式2

1 /* 2 if語句格式2: 3 if(比較表達式) { 4 語句體1; 5 }else { 6 語句體2; 7 } 8 執(zhí)行流程: 9 首先計算比較表達式的值,看其返回值是true還是false。 10 如果是true,就執(zhí)行語句體1; 11 如果是false,就執(zhí)行語句體2; 12 13 注意:else后面是沒有比較表達式的,只有if后面有。 14 */ 15 class IfDemo3 { 16 public static void main(String[] args) { 17 //判斷兩個數據是否相等 18 19 int a = 10; 20 int b = 20; 21 22 if(a == b) { 23 System.out.println("a等于b"); 24 }else { 25 System.out.println("a不等于b"); 26 } 27 } 28 }

三元運算符與if格式2的區(qū)別:

1 /* 2 由于if語句的第二種格式剛才也完成了三元運算符可以完成的效果。 3 所以,我們就認為他們可以完成一樣的操作。 4 但是,他們就一點區(qū)別沒有嗎?肯定不是。 5 6 區(qū)別: 7 三元運算符實現的,都可以采用if語句實現。反之不成立。 8 9 什么時候if語句實現不能用三元改進呢? 10 當if語句控制的操作是一個輸出語句的時候就不能。 11 為什么呢?因為三元運算符是一個運算符,運算符操作完畢就應該有一個結果,而不是一個輸出。 12 */ 13 class IfDemo4 { 14 public static void main(String[] args) { 15 //獲取兩個數據的最大值 16 int a = 10; 17 int b = 20; 18 19 //用if語句實現 20 int max1; 21 if(a > b) { 22 max1 = a; 23 }else { 24 max1 = b; 25 } 26 System.out.println("max1:"+max1); 27 28 //用三元改進 29 int max2 = (a > b)? a: b; 30 System.out.println("max2:"+max2); 31 System.out.println("----------"); 32 33 //判斷一個數據是奇數還是偶數,并輸出是奇數還是偶數 34 int x = 100; 35 36 if(x%2 == 0) { 37 System.out.println("100是一個偶數"); 38 }else { 39 System.out.println("100是一個奇數"); 40 } 41 42 //用三元改進 43 //這種改進是錯誤的。 44 //String s = (x%2 == 0)?System.out.println("100是一個偶數");:System.out.println("100是一個奇數");; 45 } 46 }

if語句格式3:

1 /* 2 由于if語句的第二種格式剛才也完成了三元運算符可以完成的效果。 3 所以,我們就認為他們可以完成一樣的操作。 4 但是,他們就一點區(qū)別沒有嗎?肯定不是。 5 6 區(qū)別: 7 三元運算符實現的,都可以采用if語句實現。反之不成立。 8 9 什么時候if語句實現不能用三元改進呢? 10 當if語句控制的操作是一個輸出語句的時候就不能。 11 為什么呢?因為三元運算符是一個運算符,運算符操作完畢就應該有一個結果,而不是一個輸出。 12 */ 13 class IfDemo4 { 14 public static void main(String[] args) { 15 //獲取兩個數據的最大值 16 int a = 10; 17 int b = 20; 18 19 //用if語句實現 20 int max1; 21 if(a > b) { 22 max1 = a; 23 }else { 24 max1 = b; 25 } 26 System.out.println("max1:"+max1); 27 28 //用三元改進 29 int max2 = (a > b)? a: b; 30 System.out.println("max2:"+max2); 31 System.out.println("----------"); 32 33 //判斷一個數據是奇數還是偶數,并輸出是奇數還是偶數 34 int x = 100; 35 36 if(x%2 == 0) { 37 System.out.println("100是一個偶數"); 38 }else { 39 System.out.println("100是一個奇數"); 40 } 41 42 //用三元改進 43 //這種改進是錯誤的。 44 //String s = (x%2 == 0)?System.out.println("100是一個偶數");:System.out.println("100是一個奇數");; 45 } 46 }

if語句格式2練習:

1 /* 2 if語句格式2的練習: 3 A:獲取兩個數據中較大的值 4 B:判斷一個數據是奇數還是偶數,并輸出是奇數還是偶數 5 */ 6 import java.util.Scanner; 7 8 class IfTest { 9 public static void main(String[] args) { 10 //創(chuàng)建鍵盤錄入對象 11 Scanner sc = new Scanner(System.in); 12 13 //獲取兩個數據中較大的值 14 System.out.println("請輸入第一個數據:"); 15 int a = sc.nextInt(); 16 17 System.out.println("請輸入第二個數據:"); 18 int b = sc.nextInt(); 19 20 //定義一個變量接收最大值 21 int max; 22 23 if(a > b) { 24 max = a; 25 }else { 26 max = b; 27 } 28 29 System.out.println("max:"+max); 30 System.out.println("----------------"); 31 32 //判斷一個數據是奇數還是偶數 33 System.out.println("請輸入你要判斷的數據:"); 34 int x = sc.nextInt(); 35 36 if(x%2 == 0) { 37 System.out.println(x+"這個數據是偶數"); 38 }else { 39 System.out.println(x+"這個數據是奇數"); 40 } 41 } 42 }

if語句格式3練習:

1 /* 2 三種if語句分別適合做什么事情呢? 3 格式1:適合做單個判斷 4 格式2:適合做兩個判斷 5 格式3:適合做多個判斷 6 7 需求: 8 鍵盤錄入x的值,計算出y的并輸出。 9 10 x>=3 y = 2x + 1; 11 -1<=x<3 y = 2x; 12 x<=-1 y = 2x – 1; 13 14 分析: 15 A:由于數據要鍵盤錄入,所以必須使用Scanner。 16 B:由于是三種判斷,所以我們選擇if語句格式3。 17 */ 18 import java.util.Scanner; 19 20 class IfTest2 { 21 public static void main(String[] args) { 22 //創(chuàng)建鍵盤錄入對象 23 Scanner sc = new Scanner(System.in); 24 25 System.out.println("請輸入x的值:"); 26 int x = sc.nextInt(); 27 28 //定義一個y 29 int y; 30 31 //用if語句格式3進行判斷 32 if(x >= 3) { 33 y = 2*x + 1; 34 }else if(x>=-1 && x<3) { 35 y = 2*x; 36 }else { 37 y = 2*x - 1; 38 } 39 40 System.out.println("y:"+y); 41 } 42 }

鍵盤錄入月份的值,輸出對應的季節(jié)

1 /* 2 鍵盤錄入月份的值,輸出對應的季節(jié)。 3 4 春 3,4,5 5 夏 6,7,8 6 秋 9,10,11 7 冬 12,1,2 8 9 分析: 10 A:鍵盤錄入月份的值,所以我們要使用Scanner。 11 B:我們應該判斷這個月份在那個季節(jié),而這個判斷情況較多,所以,用if語句格式3。 12 13 if語句的使用場景: 14 A:針對表達式是一個boolean類型的判斷 15 B:針對一個范圍的判斷 16 */ 17 import java.util.Scanner; 18 19 class IfTest3 { 20 public static void main(String[] args) { 21 //創(chuàng)建鍵盤錄入對象 22 Scanner sc = new Scanner(System.in); 23 24 //錄入數據 25 System.out.println("請你輸入一個月份:"); 26 int month = sc.nextInt(); 27 28 //第三種格式實現即可 29 if(month<1 || month>12) { 30 System.out.println("你輸入的月份有誤"); 31 }else if(month == 1) { 32 System.out.println("冬季"); 33 }else if(month == 2) { 34 System.out.println("冬季"); 35 }else if(month == 3) { 36 System.out.println("春季"); 37 }else if(month == 4) { 38 System.out.println("春季"); 39 }else if(month == 5) { 40 System.out.println("春季"); 41 }else if(month == 6) { 42 System.out.println("夏季"); 43 }else if(month == 7) { 44 System.out.println("夏季"); 45 }else if(month == 8) { 46 System.out.println("夏季"); 47 }else if(month == 9) { 48 System.out.println("秋季"); 49 }else if(month == 10) { 50 System.out.println("秋季"); 51 }else if(month == 11) { 52 System.out.println("秋季"); 53 }else { 54 System.out.println("冬季"); 55 } 56 System.out.println("--------------"); 57 58 //這個程序確實是符合了我們的需求,但是就是看起來比較麻煩 59 //那么,我們能不能改進一下呢? 60 //month == 3 61 //month == 4 62 //month == 5 63 //我們發(fā)現,上面三個都是春季。 64 //而他們本身每一個都是一個boolean表達式 65 //所以,我們就可以考慮使用邏輯運算符給他們連接起來改進 66 if(month<1 || month>12) { 67 System.out.println("你輸入的月份有誤"); 68 }else if(month==3 || month==4 || month==5) { 69 System.out.println("春季"); 70 }else if(month==6 || month==7 || month==8) { 71 System.out.println("夏季"); 72 }else if(month==9 || month==10 || month==11) { 73 System.out.println("秋季"); 74 }else { 75 System.out.println("冬季"); 76 } 77 System.out.println("--------------"); 78 79 //這個時候,程序代碼以及可以了。 80 //但是呢,假如我要求你輸入一個月份,判斷是上半年還是下半年。 81 //這個時候,我們的判斷條件連接就是6個boolean表達式 82 //我們可能還有更多的連接 83 //這個時候,其實我們還有另外的一種改進方案: 84 //month == 3 85 //month == 4 86 //month == 5 87 //month>=3 && month<=5 88 //用范圍也是可以改進的。 89 if(month<1 || month>12) { 90 System.out.println("你輸入的月份有誤"); 91 }else if(month>=3 && month<=5) { 92 System.out.println("春季"); 93 }else if(month>=6 && month<=8) { 94 System.out.println("夏季"); 95 }else if(month>=9 && month<=11) { 96 System.out.println("秋季"); 97 }else { 98 System.out.println("冬季"); 99 } 100 System.out.println("--------------"); 101 } 102 }

獲取三個數據中的最大值:

1 /* 2 獲取三個數據中的最大值 3 4 由此案例主要是為了講解if語句是可以嵌套使用的。而且是可以任意的嵌套。 5 */ 6 class IfTest4 { 7 public static void main(String[] args) { 8 int a = 10; 9 int b = 30; 10 int c = 20; 11 12 //三元實現 13 //int temp = (a>b)? a: b; 14 //int max = (temp>c)? temp: c; 15 //System.out.println("max:"+max); 16 //System.out.println("--------"); 17 18 //用if語句實現 19 int max; 20 if(a > b) { 21 if(a > c) { 22 max = a; 23 }else { 24 max = c; 25 } 26 }else { 27 if(b > c) { 28 max = b; 29 }else { 30 max = c; 31 } 32 } 33 System.out.println("max:"+max); 34 } 35 }

?

轉載于:https://www.cnblogs.com/super90/p/4660049.html

總結

以上是生活随笔為你收集整理的03_运算符、键盘录入、流程控制的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。