Java基礎語法02——流程控制
阿新 • • 發佈:2022-03-27
Java基礎語法02——流程控制
流程控制:順序結構、分支結構(if-else、switch-case)、迴圈結構(for、while、do-while)
-
實現從鍵盤獲取不同型別的變數——Scanner類
步驟:
-
導包:
import java.util.Scanner;
-
Scanner例項化:
Scanner scan = new Scanner(System.in);
-
呼叫Scanner的相關方法,來獲取指定型別的變數:格式:
Scanner.方法
String型別——next()
int型別——nextInt()
double型別——nextDouble()
-
分支結構1——if-else結構
三種形式:
-
/* if(條件表示式){ 執行語句; } */
-
/* if(條件表示式){ 執行語句1; }else{ 執行語句2; } */
-
/* if(條件表示式1){ 執行語句1; }else if(條件表示式2){ 執行語句2; }else if (條件表示式3){ 執行語句3; } ```````` else{ 執行語句n; } */
if-else結構可以相互巢狀
【一旦滿足,就會退出結構】
只有一個執行語句時,{}可以省略,但不建議省,容易出錯
——>拓展:如何獲取一個隨機數?[a,b]
使用Math類下的random方法,產生的是double型別的資料,且範圍為[0.0,1.0)
公式:int m = (int)Math.random()*(a-b+1)+a;
分支結構2——switch-case結構
switch-case結構格式:
/*
switch(表示式)//不是條件表示式
case 常量1:
執行語句1;
break;//非必須
case 常量2:
執行語句2;
break;//非必須
······
default:
執行語句;
*/
- 過程:將switch表示式的值與case常量的值匹配,匹配成功,執行相應case下的語句;執行後繼續向下執行case其他執行語句,直至遇到break關鍵字或結構末尾結束。
- break關鍵字:可用在switch-case結構中,(可選的)遇到此關鍵字,跳出結構
- switch後表示式只能是如下六種型別:byte、short、int、char、列舉型別(JDK5.0新增)、String型別(JDK7.0新增)
- default:可選的,位置靈活的
迴圈結構1——for迴圈
-
迴圈結構的四個部分:初始部分、迴圈條件部分、迴圈體部分、迭代條件部分
-
for迴圈的結構:
/* for(初始;迴圈條件;迭代){ 迴圈體 } //()裡每一部分可以有多條語句 //執行過程:初始——迴圈條件(結果為boolean型別)——(true)迴圈體——迭代——迴圈條件判斷——迴圈體——迭代——······ */
//舉例:輸出5條HelloWorld語句 public class Demo{ public static void main(String[] args){ for(int i=1;i<=5;i++){ System.out.println("HelloWorld"); } } }
-
break關鍵字的使用:遇到break,迴圈結束;跳出迴圈結構
迴圈結構2——while迴圈
while迴圈的結構
/*
初始
while(迴圈條件){
迴圈體;
迭代條件;//小心不要忘記,否則容易死迴圈
}
//執行過程:初始——迴圈條件(結果為boolean型別)——(true)迴圈體——迭代——迴圈條件判斷——迴圈體——迭代——······
*/
迴圈結構3——do-while迴圈
do-while迴圈結構:
/*
初始
do{
迴圈體;
迭代條件;
}while(迴圈條件)
//執行過程略有不同:初始——迴圈體——迭代——迴圈條件——迴圈體——迭代——迴圈條件——······
//注意:do-while迴圈的迴圈體至少執行一次
*/
開發中使用前兩種迴圈的情況比較多
——>拓展:最簡單“無限迴圈格式”:while(true)
或for(;;)
——不知道迴圈次數是多少——可以通過break結束迴圈。
例題:從鍵盤輸入多個不確定的整數,並輸出正數和負數的個數,輸入0時結束迴圈##
import java.util.Scanner;
public class Test1{
public static void main(String[] args){
Scanner scan = new Scanner(System.in);
int postivenumber = 0;
int negtivenumber = 0;
while(true){
int num = scan.nextInt();
if(num>0){
postivenumber++;
}else if(num<0){
negtivenumber++;
}else{
break;
}
}
System.out.println(postivenumber);
System.out.println(negtivenumber);
}
}
巢狀迴圈
-
層數不會太多,一般不會超過三層
-
將一個迴圈結構A宣告在另一個迴圈結構B的迴圈體中,就構成了巢狀迴圈
-
外層迴圈:B;內層迴圈:A
-
說明:
- 內層迴圈執行一遍,相當於外層迴圈執行一次
- 假設外層迴圈需要執行m次,內層迴圈需要執行n次。此時,內層迴圈的迴圈體一共執行了m*n次
- 技巧:外層迴圈控制行數,內層控制列數
//應用1:九九乘法表
public class Test1{
public static void main(String[] args){
for(int i=1;i<=9;i++){
for(int j=1;j<=i;j++){
System.out.print(i+"*"+j+"="+i*j+" ");
}
System.out.println();
}
}
}
/*應用2:輸出100以內的質數(常見筆試題)
質數:(素數)只能被1和它本身整除的自然數【最小的質數2】
——2~這個數-1 都不能被這個數整除
*/
public class Test2{
public static void main(String[] args){
boolean b = true;//標識i是否被j除盡,一旦除盡,立刻更改其值
for(int i=2;i<=100;i++){
for(int j=2;j<=Math.sqrt(i);j++){//優化二:將j<i-1改成小於根號i
if(i%j==0){
b=false;
break;//優化一:對本身是非質數的自然數的處理,只要有除盡的 就不是質數了
}
}
if(b==true){
System.out.println(i);
}
b=true;//重置b變數
}
}
}
break、continue關鍵字的使用
使用範圍 | 迴圈中使用的作用 | 相同點 | |
---|---|---|---|
break | 迴圈結構 | 結束當前迴圈 | 關鍵字後面不能宣告執行語句 |
continue | 迴圈結構 | 結束當次迴圈 | 關鍵字後面不能宣告執行語句 |
//說明1
public class Test3{
public static void main(String[] args){
for(int i=1;i<=10;i++){
if(i%4==0){
//break;//輸出:1 2 3
continue;//輸出:1 2 3 5 6 7 9 10
}
System.out.print(i+" ");
}
}
}
//說明2:在巢狀迴圈中,break(continue)作用於離關鍵字最近的一層迴圈;
//如果想要指定對某一層迴圈起作用,可以使用標籤,例子如下:
public class Test1{
public static void main(String[] args){
label:for(int i=1;i<=4;i++){
for(int j=1;j<=10;j++){
if(j%4==0){
break label;
//continue;
}
System.out.print(j+" ");
}
System.out.println();
}
}
}//輸出結果:1 2 3