簡說Java控制流程
阿新 • • 發佈:2020-11-13
流程控制
1.使用者互動Scanner
-
Scanner類
-
獲取使用者的輸入
-
Scanner reader = new Scanner(System.in);
-
next(),nextLine(),hasNext(),hasNextLine();
-
package scanner; import java.util.Scanner; public class Demo02 { public static void main(String[] args) { //建立一個掃描器物件,用於接受鍵盤資料 Scanner reader = new Scanner(System.in); System.out.println("使用nextLine()方式接收"); //判斷使用者有沒有輸入字串 if(reader.hasNextLine()){ String str = reader.nextLine(); System.out.println(str); } //凡是屬於IO流,使用完畢之後務必關閉資源 reader.close(); } }
package scanner; import java.util.Scanner; public class Demo05 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int sum = 0; int count = 0; while(scanner.hasNextDouble()){ double x = scanner.nextDouble(); count++; sum += x; } System.out.println(sum); scanner.close(); } }
2.順序結構
- 基本結構
- 每個演算法都離不開的結構
3.選擇結構
3.1單選擇結構
boolean flag = true;
if(flag){
}
3.2雙選擇結構
boolean flag = true;
if(flag){
}else{
}
3.3多選擇結構
boolean flag = true;
if(flag){
}else if(flag){
}else{
}
3.4巢狀結構
if(){
if(){
}
}
package struct; import java.util.Scanner; public class Demo01 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); double score = 0; System.out.println("請輸入成績:"); //接收資料 if(scanner.hasNextDouble()){ score = scanner.nextDouble(); } //判斷成績的級別 if(score == 100){ System.out.println("S"); }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){ System.out.println("不及格"); }else{ System.out.println("成績不合法"); } scanner.close(); } }
3.5switch選擇結構
case穿透現象
switch語句會根據表示式的值從相匹配的case標籤處開始執行,一直執行到break語句處或者是switch語句的末尾。如果沒有break語句,那麼就會從表示式的值相匹配的case標籤處開始執行,一直執行到switch語句的末尾,這種從其中的一個case處開始,忽略後面的值的匹配,直接執行case的內容的現象就是穿透的現象。
public class Demo02 {
public static void main(String[] args) {
//case穿透 無break
//switch “匹配”
char grade = 'B';
switch (grade){
case 'A':
System.out.println("優秀");
break;
case 'B':
System.out.println("良好");
case 'C':
System.out.println("及格");
case 'D':
System.out.println("再接再厲");
default:
System.out.println("掛科");
}//沒有break就會出現case穿透現象!輸出下邊所有的
}
}
反編譯
idea中可以直接將class檔案 丟在一個資料夾下
4.迴圈結構
whill迴圈 do……while迴圈
int i = 0 ;
while(i<100){
System.out.println(i++);
}
package struct;
public class Demo03 {
public static void main(String[] args) {
int i = 0;
while(i<100){
System.out.println(++i);
}
//=========================================
int a = 0;
int sum = 0;
while(a<=100){
sum += a;
a++;
}
System.out.println(sum);
//===================================================
int b = 0;
int c = 0;
do{
System.out.println(b);
}while(b<0);
System.out.println("======================");
while(c<0){
System.out.println(c);
}
}
}
for迴圈
- 迭代的通用結構。有效、靈活
- 執行次數在執行前就確定的
- 最先執行的為初始化步驟。可以聲名一種型別,可以初始化一個或者多個迴圈變數可以是空語句
- 其次,檢測布林表示式的值,也可以為空即死迴圈
- 執行一次迴圈後,更新迴圈控制變數
//用whil/do迴圈輸出0-1000 5的倍數,且每行輸出三個
for (int i = 0; i < 1000; i++) {
if((i%5)==0){
System.out.print(i+"\t");
}
if((i%(3*5))==0) {
System.out.println();
}
}
package struct;
public class Demo06 {
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 + "\t");
}
System.out.println();
}
}
}
- 增強for迴圈 for each
5.break、continue
-
break
在任何迴圈語句的主體部分,均可以使用break控制迴圈的流程。break用於強制退出迴圈不執行迴圈中剩餘的語句
for(i = 0; i < 100; i++){
if(i == 30){
break;
}
System.out.println(i+"\t");
}//輸出0~29
-
continue
用在迴圈語句體中,用於終止某一次的迴圈過程
for(i = 0; i < 100; i++){
if(i%10 == 0){
continue;
}
System.out.println(i+"\t");
}//不輸出10的倍數
-
goto關鍵字(瞭解)
-
goto依然是Java中的一個保留字,在break和continue中可以看到一些goto的影子
-
“標籤”指後面跟一個冒號的識別符號:
lable:
-
對Java來說唯一用到標籤的地方是在迴圈語句之前
-
package struct;
public class Demo08 {
public static void main(String[] args) {
//列印101到150之間的質數
lable:for(int i = 101;i<150;i++){
for(int j = 2;j<i/2;j++)
if(i%j==0)
continue lable;
System.out.print(i+"\t");
}
}
}
6練習
public class Demo09 {
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 = 0; j <= i; j++) {
System.out.print("*");
}
for (int j = 0; j < i; j++) {
System.out.print("*");
}
System.out.println();
}
}
}
- debug初步使用
-
安利良心Up主,超棒!