以前咱們學的基本語法中咱們並無實現程序和人的交互,可是Java給咱們提供了這樣一個工具類,咱們能夠獲取用戶的輸入。java.util.Scanner是java5的新特性,咱們能夠經過Scanner類來獲取用戶的輸入java
調用Scanner類時ctrl點擊Scanner能夠進入他的類文件查看其它方法算法
基本語法:express
Scanner s = new Scanner(System.in);
next()編程
package com.shenxiaoyu.scanner; import java.util.Scanner; public class Demo001 { public static void main(String[] args) { //建立一個掃描器對象,用於接收鍵盤數據 Scanner scanner = new Scanner(System.in);//接收用戶輸入並封裝成Scanner對象 System.out.println("請輸入相關內容:"); //判斷用戶有沒有輸入字符串 if(scanner.hasNext()){ //使用next方法接收 String str = scanner.next(); System.out.println("輸入的內容爲:"+str); } scanner.close();//凡是屬於IO流的類若是不關閉會一直佔用資源,要養成好習慣用完就關掉 } }
輸出結果:數組
nextLine()服務器
package com.shenxiaoyu.scanner; import java.util.Scanner; public class Demo002 { public static void main(String[] args) { //從鍵盤接收數據 Scanner scanner = new Scanner(System.in); System.out.println("請輸入相關內容:"); //判斷是否還有輸入 if(scanner.hasNextLine()){ //使用nextLine方法接收 String str = scanner.nextLine(); System.out.println("輸入的內容爲:"+str); } scanner.close(); } }
輸出結果:工具
不加if語句也能夠實現輸入輸出,前面if語句是爲了判斷用戶是否輸入字符串性能
package com.shenxiaoyu.scanner; import java.util.Scanner; public class Demo003 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("請輸入相關內容:"); String str = scanner.nextLine(); System.out.println("輸入的內容爲:"+str); scanner.close(); } }
結果和剛纔是同樣的:測試
輸入整型和浮點型設計
package com.shenxiaoyu.scanner; import java.util.Scanner; public class Demo004 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); //從鍵盤接收數據 int i = 0; float f = 0.0f; System.out.println("請輸入整數:"); if(scanner.hasNextInt()){ i = scanner.nextInt(); System.out.println("整數數據:"+i); }else{ System.out.println("輸入的不是整數數據!"); } System.out.println("請輸入小數:"); if(scanner.hasNextFloat()){ f = scanner.nextFloat(); System.out.println("小數數據:"+f); }else{ System.out.println("輸入的不是小數數據!"); } scanner.close(); } }
結果:
package com.shenxiaoyu.scanner; import java.util.Scanner; public class Demo005 { public static void main(String[] args) { //咱們能夠輸入多個數字,並求總和與平均數,每輸入一個數字用回車確認,經過輸入非數字來結束並輸出執行結果: Scanner scanner = new Scanner(System.in); //和 double sum =0; //計算輸入了多少個數字 int m =0; //經過循環判斷是否還有輸入,並在裏面對每個進行求和和統計 while(scanner.hasNextDouble()){ double x = scanner.nextDouble(); m++;//m+1 sum=sum+x; System.out.println("你輸入了第"+m+"個數據,而後當前結果sum="+sum); } System.out.println(m+"個數的和爲:"+sum); System.out.println(m+"個數的平均值爲:"+(sum/m)); scanner.close(); } }
結果爲:
咱們不少時候須要判斷一個東西是否可行,而後咱們纔去執行,這樣一個過程在程序中用if語句來表示
語法:
if(布爾表達式){ //若是布爾表達式爲true將執行括號{}裏的語句,不然將不執行 }
運用scanner練習if單選擇結構:
package com.shenxiaoyu.struct; import java.util.Scanner; public class IfDemo01 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("請輸入內容:"); String s = scanner.nextLine(); //equals:判斷字符串是否相等 if (s.equals("Hello")){ System.out.println(s); } System.out.println("End"); scanner.close(); } }
結果:
那如今有個需求,成功了,我要A,失敗了,我要B,這樣的需求用一個if就搞不定了,咱們須要有兩個判斷,須要一個雙選擇結構,因此有了if-else結構
語法:
if(布爾表達式){ //若是布爾表達式爲true }else{ //若是布爾表達式爲false }
運用scanner練習if-else雙選擇結構:
package com.shenxiaoyu.struct; import java.util.Scanner; public class IfDemo02 { public static void main(String[] args) { //考試分數大於60就是及格,小於60分就是不及格 Scanner scanner = new Scanner(System.in); System.out.println("請輸入成績:"); int score = scanner.nextInt(); if(score>60){ System.out.println("及格"); }else{ System.out.println("不及格"); } scanner.close(); } }
結果:
在生活中咱們不少時候的選擇不只僅只有兩個,因此咱們須要一個多選擇結構來處理這個問題
語法:
if(布爾表達式 1){ //若是布爾表達式 1的值爲true執行代碼 }else if(布爾表達式 2){ //若是布爾表達式 2的值爲true執行代碼 }else if(布爾表達式 3){ //若是布爾表達式 3的值爲true執行代碼 }.... else { //若是以上布爾表達式都不爲true執行代碼 }
運用scanner練習if多選擇結構:
package com.shenxiaoyu.struct; import java.util.Scanner; public class IfDemo03 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("請輸入成績:"); int score = scanner.nextInt(); if(score==100){ System.out.println("恭喜滿分"); }else if(score<100 && score>=90){ System.out.println("A級"); }else if(score<90 && score>=80){ System.out.println("B級"); }else if(score<80 && score>=70){ System.out.println("C級"); }else if(score<70 && score>=60){ System.out.println("D級"); }else if(score<60 && score>=0){ System.out.println("不及格"); }else { System.out.println("成績不合法"); } scanner.close(); } }
結果:
使用嵌套的if-else語句是合法的,也就是說你能夠在另外一個if或者else if語句中使用if或者else if語句。你能夠像if語句同樣嵌套else if....else
語法:
if(布爾表達式 1){ //若是布爾表達式 1的值爲true執行代碼 if(布爾表達式 2){ //若是布爾表達式 2的值爲true執行代碼 } }
運用scanner練習嵌套的if結構:
package com.shenxiaoyu.struct; import java.util.Scanner; //查找輸入0-100數的範圍 public class IfDemo04 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("請輸入0-100的數字:"); int num = scanner.nextInt(); if(num<=100 && num>50){ System.out.println("你輸入的數大於50"); if(num<=100 && num>75){ System.out.println("你輸入的數大於75"); }else if (num==75){ System.out.println("你輸入的數等於75"); }else{ System.out.println("你輸入的數小於75"); } }else if(num==50){ System.out.println("你輸入的數等於50"); }else if(num<50&& num>=0){ System.out.println("你輸入的數小於50"); if(num<50 && num>25){ System.out.println("你輸入的數大於25"); }else if (num==25){ System.out.println("你輸入的數等於25"); }else{ System.out.println("你輸入的數小於25"); } }else { System.out.println("你輸入的數不合法"); } scanner.close(); } }
結果:
語法:
switch(expression){ case value: //語句 break;//可選 case value: //語句 break;//可選 //你能夠有任意數量的case語句 default://可選 //語句 }
switch多選擇結構語句char練習:
package com.shenxiaoyu.struct; public class SwitchDemo01 { public static void main(String[] args) { //switch匹配一個具體的值 char grade = 'C'; switch (grade){ case 'A': System.out.println("優秀"); break; case 'B': System.out.println("良好"); break; case 'C': System.out.println("及格"); break; case 'D': System.out.println("再接再礪"); break; case 'E': System.out.println("掛科"); break; default: System.out.println("未知等級"); } } }
結果:
switch多選擇結構語句String練習:
package com.shenxiaoyu.struct; public class SwitchDemo02 { public static void main(String[] args) { String name = "油炸蘑菇魚"; switch(name){ case "沈小榆": System.out.println("沈小榆是小可愛"); break; case "油炸蘑菇魚": System.out.println("快來關注油炸蘑菇魚"); break; default: System.out.println("弄啥嘞!"); } } }
結果:
while(布爾表達式){ //循環內容 }
public class WhileDemo01 { public static void main(String[] args) { //輸出1~100的和 int i =0; int sum = 0; while(i<=100){ sum=sum+i; i++; } System.out.println(sum);//5050 } }
語法:
do{ //代碼語句 }while(布爾表達式);
public class DoWhileDemo { public static void main(String[] args) { int i=0; int sum =0; do{ sum=sum+i; i++; }while (i<=100); System.out.println(sum);//5050 } }
public class DoWhileDemo01 { public static void main(String[] args) { int a = 0; while(a<0){ System.out.println(a); a++; } System.out.println("=============================="); do{ System.out.println(a); a++; }while(a<0); } }
從結果就能看出while和do-while的區別:
語法:
for(初始化;布爾表達式;更新){ //代碼語句 }
快捷鍵:100.for+enter
while和for循環對比:
public class ForDemo01 { public static void main(String[] args) { int a = 1;//初始化條件 while(a<=100){//條件判斷 System.out.println(a);//循環體 a+=2;//迭代 } System.out.println("while循環結束!"); //初始化 條件判斷 迭代 for(int i=1;i<=100;i++){ System.out.println(i); } System.out.println("for循環結束!"); } }
public static void main(String[] args) { //練習:計算0到100之間的奇數和偶數和 int oddSum = 0; int evenSum = 0; for (int i = 0; i <=100; i++) { if(i%2!=0){ oddSum+=i; }else{ evenSum+=i; } } System.out.println("奇數和爲:"+oddSum);//奇數和爲:2500 System.out.println("偶數和爲:"+evenSum);//偶數和爲:2550 }
public class ForDemo03 { public static void main(String[] args) { //練習:用while或for循環輸出1~1000之間能被5整除的數,而且每行輸出3個 for (int i = 0; i <=1000; i++) { if (i%5==0){ System.out.print(i+"\t"); } //每行輸出3個 if(i%(5*3)==0){ System.out.println();//System.out.print("\n"); } } //println 輸出完會換行 //print 輸出完不會換行 } }
public class ForDemo04 { public static void main(String[] args) { for (int i = 1; i <=9; i++) { //j<=i用來排除重複項 for (int j =1; j <=i; j++) { System.out.print(i+"*"+j+"="+(i*j)+"\t"); } System.out.println(); /* 1*1=1 2*1=2 2*2=4 3*1=3 3*2=6 3*3=9 4*1=4 4*2=8 4*3=12 4*4=16 5*1=5 5*2=10 5*3=15 5*4=20 5*5=25 6*1=6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36 7*1=7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49 8*1=8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64 9*1=9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81 */ } } }
java加強for循環語法格式以下:
for(聲明語句:表達式){ //代碼句子 }
public class ForDemo05 { public static void main(String[] args) { int[] numbers = {10,20,30,40,50,60};//定義了一個數組 //遍歷數組的元素 for(int x:numbers){ System.out.println(x); } System.out.println("======================="); for (int i = 0; i < 5; i++) { System.out.println(numbers[i]); } } }
和for對比結果相同:
在任何循環語句的主體部分,都可用break控制循環的流程。break用於強行退出循環,不執行循環中剩餘的語句。(break語句也在switch語句中使用)
用於強行跳出循環語句但後續語句仍是會被執行
public class BreakDemo { public static void main(String[] args) { int i =0; while(i<100){ i++; System.out.println(i); if (i==30){ break; } } System.out.println("123我是測試"); } }
結果:
在循環語句中,用於終止某次循環過程,即跳過循環體中還沒有執行的語句,接着進行下一次是否執行循環的斷定
用於結束當前循環,但仍是會繼續其餘循環
public class ContinueDemo { public static void main(String[] args) { int i = 0; while(i<100){ i++; if(i%10==0){ System.out.println(); continue; } System.out.print(i); } } }
結果:
public class LabelDemo { public static void main(String[] args) { //打印101~150之間全部的質數 //質數就是指大於1的天然數中,除了1和它自己之外再也不有其餘因數的天然數 int count =0 ; outer:for(int i=101;i<150;i++){ for(int j=2;j<i/2;j++){ if(i%j==0){ continue outer;//i%j==0則跳回到for循環標籤標記處 } } System.out.print(i+" ");//101 103 107 109 113 127 131 137 139 149 } } }
public class TestDemo { public static void main(String[] args) { //打印三角形 5行 for (int i = 1; i <= 5; i++) { for (int j = 5; j >=i; j--) { System.out.print(" "); } for (int j = 1; j <=i; j++) { System.out.print("*"); } for (int j = 1; j <i; j++) { System.out.print("*"); } System.out.println(); /* * *** ***** ******* ********* */ } } }