Java流程控制
Java流程控制
- 用戶交互Scanner
- 順序結(jié)構(gòu)
- 選擇結(jié)構(gòu)
- 循環(huán)結(jié)構(gòu)
- break & continue
- 練習(xí)
Scanner對象 (scanner)
java.util.Scanner
Scanner可以獲取用戶的輸入
基本語法(Demo)
Scanner s = new Scanner(System.in);
通過Scanner類的next()與nextLine()方法獲取輸入的字符串,在讀取前我們一般需要使用hasNext()與hasNextLine()判斷是否還有輸入的數(shù)據(jù)
-
next() (Demo)
-
一定要讀取到有效字符后才可以結(jié)束輸入。
-
對輸入有效字符之前遇到的空格,next()方法會自動將其去掉。
-
只有輸入有效字符后才將其后面輸入的空格作為分隔符或者結(jié)束符。
-
next()不能得到帶有空格的字符串
-
-
nextLine() (Demo1)
- 以Enter為結(jié)束符,nextLine()方法返回的是輸入回車之前的所有字符。
- 可以獲得空格。
(Demo2)為拓展
-
package scanner; import java.util.Scanner; public class Demo3 { public static void main(String[] args) { //我們可以輸入多個數(shù)字,并求其總和與平均數(shù),每輸入一個數(shù)字用回車確認(rèn),通過輸入非數(shù)字來結(jié)束輸入并輸出執(zhí)行結(jié)果 Scanner scanner= new Scanner(System.in); //和 double sum = 0; //計(jì)算輸入了多少個數(shù)字 int m=0; System.out.println("請輸入數(shù)據(jù)"); //通過循環(huán)判斷是否還有輸入,并在里面對每一次進(jìn)行求和統(tǒng)計(jì) while (scanner.hasNextDouble()){ double x = scanner.nextDouble(); m++; sum+=x; } System.out.println(m + "個數(shù)的和為" + sum); System.out.println(m + "個數(shù)的平均值為"+ sum / m); scanner.close(); } }
順序結(jié)構(gòu) (struct)
它是由若干個依次執(zhí)行的處理步驟組成的,它是任何一個算法都離不開的基本結(jié)構(gòu)
選擇結(jié)構(gòu)
- if單選擇結(jié)構(gòu)
- if雙選擇結(jié)構(gòu)
- if多選擇結(jié)構(gòu)
- 嵌套的if結(jié)構(gòu)
- switch多選擇結(jié)構(gòu)
if單選擇結(jié)構(gòu) (IfDemo)
語法
if(布爾表達(dá)式){
//如果布爾表達(dá)式為true則執(zhí)行
}
if雙選擇結(jié)構(gòu) (IfDemo1)
語法
if(布爾表達(dá)式){
//如果布爾表達(dá)式的值為true
}else{
//如果布爾表達(dá)式為false
}
if多選擇結(jié)構(gòu) (IfDemo2)
語法
if(布爾表達(dá)式 1){
//如果布爾表達(dá)式 1的值為true
}else if(布爾表達(dá)式 2){
//如果布爾表達(dá)式 2的值為true
}else if(布爾表達(dá)式 3){
//如果布爾表達(dá)式 3的值為true
}else{
//如果以上布爾表達(dá)式都為false
}
如果其中的一個布爾表達(dá)式條件為真了則直接跳出if,不再判斷后面的布爾表達(dá)式。
嵌套的if結(jié)構(gòu)
語法
if(布爾表達(dá)式 1){
//如果布爾表達(dá)式 1的值為true
if(布爾表達(dá)式 2){
//如果布爾表達(dá)式 2的值為true
}
}
switch多選擇結(jié)構(gòu) (SwitchDemo)
語法
switch(表達(dá)式){
case value :
//語句
break;//可選
case value :
//語句
break;//可選
//可以有任意數(shù)量的case語句
default : //可選
//語句
}
注意:如果當(dāng)前的case匹配成功而語句中沒有break,則會執(zhí)行當(dāng)前的語句并且無條件執(zhí)行當(dāng)前case之后的case中的語句
最規(guī)范的方法是每一個case語句中都添加一個break
switch case語句判斷一個變量與一系列值中某個值是否相等,每個值稱為一個分支
switch語句中的變量類型可以是:
- byte、short、int、或者char、String(jdk7及以上支持)
循環(huán)結(jié)構(gòu)
- while循環(huán)
- do …while循環(huán)
- for循環(huán)
- 主要用于數(shù)組的增強(qiáng)型for循環(huán)
while循環(huán) (WhileDemo)
語法
while(布爾表達(dá)式){
//布爾表達(dá)式為true時循環(huán)內(nèi)容
}
我們大多數(shù)情況下是會讓循環(huán)停止下來的,我們需要一個讓布爾表達(dá)式為false的情況來結(jié)束循環(huán)
do…while循環(huán)
即使不滿足條件,也至少執(zhí)行一次
語法
do {
//語句
}while(布爾表達(dá)式);
for循環(huán)
語法
for(初始化; 布爾表達(dá)式; 更新){
//語句
}
在IDEA中,可以使用100.for然后回車來快速生成一個初始值為0,<100的for循環(huán)
最先執(zhí)行初始化步驟。可以聲明一種類型,但可初始化一個或多個循環(huán)控制變量,也可以是空語句
-
public class ForDemo3 { //打印九九乘法表 public static void main(String[] args) { for (int j = 1; j <= 9; j++) { for (int i = 1; i <= j; i++) { System.out.print(i+"*"+j+"="+(i*j)+"\t"); } System.out.println(); } } }
增強(qiáng)for循環(huán)
語法
for(聲明語句 : 表達(dá)式){
//語句
}
主要用來遍歷數(shù)組
break continue
- break用于強(qiáng)行退出循環(huán),不執(zhí)行循環(huán)中剩余的語句
- continue用于終止某次循環(huán)過程,接著進(jìn)行下一次是否執(zhí)行循環(huán)的判定
練習(xí)
畫三角形 (TestDemo)
public class TestDemo {
/*打印三角形 5行
*
***
*****
*******
*********
*/
public static void main(String[] args) {
for (int i = 0; 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();
}
}
}

浙公網(wǎng)安備 33010602011771號