二、流程控制
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回圈結束!");
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/502447.html
標籤:其他
