二、流程式控制制 1、用戶交互Scanner java.util.Scanner是Java5的新特性,我們可以通過Scanner類來獲取用戶輸入。 基本語法: Scanner s = new Scanner(System.in); 通過Scanner類的net()與nextLine()方法獲取輸入的字元 ...
二、流程式控制制
1、用戶交互Scanner
- java.util.Scanner是Java5的新特性,我們可以通過Scanner類來獲取用戶輸入。
- 基本語法:
Scanner s = new Scanner(System.in);
- 通過Scanner類的net()與nextLine()方法獲取輸入的字元串,在讀取前我們一般需要使用hasNext()與hasNextLine()判斷是否還有輸入的數據。
package com.pifeng.scanner;
import java.util.Scanner;
public class Demo{
public static void main(String[] args){
//創建一個掃描器對象,用於接收鍵盤數據
Scanner scanner = new Scanner(System.in);
System.out.println("使用next方式接收:");
//判斷用戶有沒有輸入字元串
if(scanner.hasNext()){
//使用next方式接收
String str = scanner.next();
System.out.println();
}
//凡是屬於IO流的類如果不關閉會一直占資源,要養成好習慣用完就關掉
scanner。close();
}
}
-
next():
- 1、一定要讀取到有效字元後才可以結束輸入。
- 2、對輸入有效字元之前遇到的空白,next()方法會自動將其去掉。
- 3、只有輸入有效字元後才將其後面輸入的空白作為分隔符或者結束符。
- 4、next()不能得到帶有空格的字元串。
-
nextLine():
- 1、以Enter為結束符也就是說 nextLine()方法返回的是輸入回車之前的所有字元。
- 2、可以獲得空白。
2、Scanner進階使用
package com.pifeng.scanner;
import java.util.Scanner;
public class Demo{
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("輸入的不是整數數據!")
}
//如果...那麼
if(scanner.hasNextFloat()){
f = scanner.nextFloat();
System.out.println("整數數據:" + f);
}else{
System.out.println("輸入的不是小數數據!")
}
//凡是屬於IO流的類如果不關閉會一直占資源,要養成好習慣用完就關掉
scanner。close();
}
}
package com.pifeng.scanner;
import java.util.Scanner;
public class Demo{
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;//m++
sum = sum + x;
System.out.println("你輸入了第"+m+"個數據,然後當前結果sum="+sum);
}
System.out.println(m + "個數的和為" + sum);
System.out.println(m + "個數的平均值是" + (sum/m));
//凡是屬於IO流的類如果不關閉會一直占資源,要養成好習慣用完就關掉
scanner。close();
}
}
3、順序結構
-
Java的基本結構就是順序結構,除非特別指明,否則就按照順序一句一句執行。
-
順序結構是最簡單的演算法結構。
-
語句與語句之間,框與框之間是按從上到下的順序進行的,它是由若幹個依次執行的處理步驟組成的,它是任何一個演算法都離不開的一種基本演算法結構。
4、if選擇結構
-
if 單選擇結構
-
我們很多時候需要判斷一個東西是否可行,然後我們才去執行,這樣一個過程在程式中用if語句來表示
-
語法:
if(布爾表達式){ //如果布爾表達式為true將執行的語句 }
-
package com.pifeng.scanner;
import java.util.Scanner;
public class Demo{
public static void main(String[] args){
System.out.println("請輸入內容:");
String s = scanner.nextLine();
//equals:判斷字元串是否相等
if(s.equals("Hello")){
System.out.println(s);
}
System.out.println("End");
scanner。close();
}
}
-
if 雙選擇結構
if(布爾表達式){ //如果布爾表達式為true將執行的語句 }else{ //如果布爾表達式為false將執行的語句 }
-
if 多選擇結構
if(布爾表達式 1){ //如果布爾表達式為1將執行的語句 }else if(布爾表達式 2){ //如果布爾表達式為2將執行的語句 }else if(布爾表達式 3){ //如果布爾表達式為3將執行的語句 }else{ //如果布爾表達式都不是true將執行的語句 }
-
嵌套的 if 結構
if(布爾表達式 1){ //如果布爾表達式為1將執行的語句 if(布爾表達式 2){ //如果布爾表達式為2將執行的語句 } }
5、switch 多選擇結構
- 多選擇結構還有一個實現方式就是switch case 語句。
- switch case 語句判斷一個變數與一系列值中某個值是否相等,每個值稱為一個分支。
- switch 語句中的變數類型可以是:
- byte、short、int、char
- 從Java SE7 開始
- switch 支持字元串String 類型了
- 同時case標簽必須為字元串常量或者字面量
switch(expression){
case value:
//語句
break;//可選
case value:
//語句
break;//可選
//你可以有任意數量的case語句
default://預設選擇
//語句
}
package com.pifeng.struct;
public class Demo{
public static void main(String[] args){
//case穿透 Switch 匹配一個具體的值
char grade = 'c';
switch(garde){
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("位置等級");
}
//equals:判斷字元串是否相等
if(s.equals("Hello")){
System.out.println(s);
}
System.out.println("End");
scanner。close();
}
}
6、while迴圈結構
-
while是最基本的迴圈,它的結構為:
while(布爾表達式){ //迴圈內容 }
-
只要布爾表達式為true,迴圈就會一直執行下去。
-
我們大多數情況是會讓迴圈停止下來的,我們需要一個讓表達式失效的方式來結束迴圈。
-
少部分情況需要迴圈一直執行,比如伺服器的請求響應監聽等。
-
迴圈條件一直為true就會造成無限迴圈【死迴圈】,我們正常業務編程中應該儘量避免死迴圈。會影響程式性能或者造成程式卡死奔潰!
package com.pifeng.struct;
public class Demo{
public static void main(String[] args){
//輸出1-100
int i = 0;
while (i<100){
i++;
System.out.println(i);
}
}
}
package com.pifeng.struct;
public class Demo{
public static void main(String[] args){
//就算1+2+3+...+100=?
int i = 0;
int sum = 0;
while (i<=100){
sum = sum + i;
i++;
}
System.out.println(sum);
}
}
7、do...while迴圈
-
對於while語句而言,如果不滿足條件,則不能進入迴圈。但有時候我們需要即使不滿足條件,也至少執行一次。
-
do...while迴圈和while迴圈相似,不同的是,do...while迴圈至少會執行一次。
do{ //代碼語句 }while(布爾表達式)
-
while和do...while的區別:
- while先判斷後執行。do...while是先執行後判斷!
- do...while總是保證迴圈體會被至少執行一次!這是他們的主要差別。
package com.pifeng.struct;
public class Demo{
public static void main(String[] args){
//就算1+2+3+...+100=?
int i = 0;
int sum = 0;
do {
sum = sum + i;
i++;
} while (i<=100);
System.out.println(sum);
}
}
8、for迴圈
-
for迴圈,使一些迴圈結構變得更加簡單
-
for迴圈語句是支持迭代的一種通用結構,是最有效、最靈活的迴圈結構。
-
for迴圈執行的次數是在執行前就確定的。語法格式如下:
for(初始化;布爾表達式;更新){ //代碼語句 }
package com.pifeng.struct;
public class Demo{
public static void main(String[] args){
//就算1+2+3+...+100=?
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迴圈結束!");
}
}