//創建一個掃描對象,用於接收鍵盤數據
Scanner scanner=new Scanner(System.in);
System.out.println("使用next方式接收:");
//判斷用戶有沒有輸入字符串
if(scanner.hasNext()){
//使用next方式接收
String str=scanner.next();//程序會等待用戶輸入完畢
System.out.println("輸出的內容為:"+str);
}
//凡是屬於IO流的類如果不關閉會一只占用資源,要養成好習慣用完就關掉
scanner.close();
-
一定要讀取到有效字符后才可以結束輸入。
-
對輸入有效字符之前遇到的空白,next()方法會自動將其去掉
-
只有輸入有效字符后才將其后面輸入的空白作為分隔符或者結束符。
-
next()不能得到帶有空格的字符串!
nextLine():
-
以Enter為結束符,也就是說nextLine()方法返回的是輸入回車之前的所有字符。
-
可以獲得空白。
Scanner進階
//我們可以輸入多個數字,並求總和與平均數,每輸入一個用回車確認,通過輸入非數字來結束輸入並輸出執行結果
//和
double sum=0;
//次數
int count=0;
Scanner scanner = new Scanner(System.in);
System.out.println("請輸入數字:");
while (scanner.hasNextDouble()){
double x=scanner.nextDouble();
count++;
sum+=x;
System.out.println("你輸入了第"+count+"個數字,當前總數為:"+sum);
}
System.out.println("總數為:"+sum);
System.out.println("平均數為:"+sum/count);
scanner.close();
順序結構
Java的基本結構就是順序結構,除非特別指明,否則就按照順序一句一句執行。
順序結構是最簡單的算法結構。
語句與語句之間,框與框之間是按從上到下的順序進行的,它是由若干個依次執行的處理步驟組成的,它是任何一個算法都離不開的一種基本算法結構。
選擇結構
if單選擇結構
-
我們很多時候需要去判斷一個東西是否可行,然后我們才去執行,這樣一個過程在程序中用if語句來表示
-
語法:
if(布爾表達式){
//如果布爾表達式為true將執行的語句
}
if雙選擇結構
語法:
if(布爾表達式){//如果布爾表達式的值為true}
else{//如果布爾表達式的值為false}
if多選擇結構
if(布爾表達式1){//如果布爾表達式1的值為true
}else if(布爾表達式2){//如果布爾表達式2的值為true
}else if(布爾表達式3){//如果布爾表達式3的值為true
}else{//如果以上布爾表達式都不為true}
/**
if語句至多有1個else語句,else語句在所有的else if語句之后;if語句可以有多個 else if語句,它們必須在else語句之前。
一旦其中一個else if語句檢測為true,其他的else if以及else語句都將跳過執行
*/
嵌套的if結構
使用嵌套的if else語句時何法的,可以在另一個if或者else if語句中使用if 或者else if語句。也可以像if語句一樣嵌套 else if。。else
語法:
if(布爾表達式1){
//如果布爾表達式1結果為true
if(布爾表達式2){
//如果布爾表達式2結果為true
}
}
switch多選擇結構
-
多選擇結構還有一個實現方式就是switch case語句
-
switch case語句判斷一個變量與一系列值中某個值是否相等,每個值稱為一個分支。
-
switch語句中的變量類型可以是:
-
byte、short、int或者char。
-
從Java SE7開始
-
switch支持字符串String類型了
-
同時case標簽必須為字符串常量或字面量。
-
//case穿透 要寫break
//java-class(字節碼文件)---反編譯(idea)
String name="趙憨憨";
switch (name){
case "趙雲":
System.out.println("我是趙雲");
break;
case "趙東":
System.out.println("我是趙大");
break;
default:
System.out.println("這是個誰");
}while循環
while是最基本的循環,它的結構為:
while(布爾表達式){
//循環內容
}-
只要布爾表達式為true,循環就會一直執行下去
-
我們大多數情況是會讓循環停止下來的,我們需要一個表達式生效的方式來結束循環。
-
少部分情況需要循環一直執行,比如服務器的請求響應監聽等。
-
循環條件一直為true就會造成無限循環【死循環】,我們正常的業務邏輯中應該盡量避免死循環。會影響程序性能或者造成程序卡死崩潰!
do...while循環
-
-
-
對於while語句而言,如果不滿足條件,則不能進入循環。但有時候我們需要即使不滿足條件,也至少執行一次。
-
do...while循環和while循環相似,不同的是,do...while循環至少會執行一次。
do{//代碼語句 }while(布爾表達式);
while和do-while的區別:
-
while先判斷后執行。dowhile是先執行后判斷!
-
DO...while總是保證循環體會被至少執行一次!這是他們的主要差別。
For循環
-
雖然所有循環結構都可以用while或者do...while表示,但Java提供了另一種語句——for循環,使一些循環結構變得更加簡單。
-
for循環語句是支持迭代的一種通用結構,是最有效、最靈活的循環結構。
-
for循環執行的次數是在執行前就確定的。語法格式如下:
for(初始化;布爾表達式;更新){ //代碼語句 } /** 關於for循環有一下幾點說明: 最先執行初始化步驟。可以聲明一種類型,但可初始化一個或多個循環控制變量,也可以是空語句。然后,檢測布爾表達式的值。如果為true,循環體被執行。如果為false,循環終止,開始執行循環體后面的語句。執行一次循環后,更新循環控制變量(迭代因子控制循環變量的增減)。 再次檢測布爾表達式。循環執行上面的過程。 */
增強for循環
語法格式:
for(聲明語句:表達式){ //代碼句子 }
聲明語句:聲明新的局部變量,該變量的類型必須和數組元素的類型匹配。其作用域限定在循環語句塊,其值與此時數組元素的值相等。
表達式:表達式是要訪問的數組名,或者是返回值為數組的方法。
-
break continue
-
break在任何循環語句的主體部分,均可用break控制循環的流程。break用於強行退出循環,不執行循環中剩余的語句。(break語句也在switch語句中使用)
-
continue語句在循環語句體重,用於終止某次循環過程,即跳過循環體重尚未執行的語句,接着進行下一次是否執行循環的判定。
-
關於goto關鍵字
-