1.用戶交互Scanner
2.順序結構
3.選擇結構
4.循環結構
5.break & continue
6.練習
1.用戶交互Scanner
-
java.util.Scanner 是 java5 的新特性,我們可以通過 Scanner 類來獲取用戶的輸入。
-
基本語法
Scanner s = new Scanner(System.in);
-
通過 Scanner 類的 next() 和 nextLine() 方法獲取輸入的字符串,再讀取前我們一般需要使用 hasNext() 和 hasNextLine() 判斷是否含有輸入的數據
-
next(): next() 不能得到帶有空格的字符串
/*
1.一定要讀取到有效字符后才可以結束輸入
2.對輸入有效字符之前遇到的空白,next()會自動將其去掉
3.輸入有效字符后,將后面的空白作為分隔符或結束符
*/ -
nextLine():
/*
1.以enter位結束符,nextLine()方法返回的是輸入回車之前的所有字符
2.可以獲得空白
*/ -
示例:
package ProcessControl.ScannerUse;
import java.util.Scanner;
// 程序可以輸入多個數組,並計算這些數的sum和mean,每輸入一個數用回車確認,通過輸入非數字來結束輸入並執行結果
public class ScannerTest_5 {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
// 和
double sum=0;
// 計算輸入了多少個數字
int n = 0;
System.out.println("請輸入數字:");
while (s.hasNextDouble()){ // Scanner 有很多方法,注意靈活使用
double a = s.nextDouble();
n++;
sum+=a;
}
System.out.println(n+"個數的和為:"+sum);
System.out.println(n+"個數的平均值為:"+(sum/n));
s.close(); //凡是屬於 IO 流的類,必須關閉節省資源
}
}
-
2.順序結構
-
Java的基本結構就是順序結構,除非特別指出,都是從上往下一句一句執行。
-
順序結構是最簡單的算法結構,任何一個算法都離不開的一種基本算法結構
-
語句與語句之間,框與框之間都是從上往下執行。
3.選擇結構
-
if 單選擇結構
if(布爾表達式){
//這是布爾表達式為true會執行的語句
} -
if 雙選擇結構
if(布爾表達式){
//這是布爾表達式為true會執行的語句
}else{
//這是布爾表達式為false會執行的語句
} -
if 多選擇結構
if(布爾表達式 1){
//這是布爾表達式 1 為true會執行的語句
}else if(布爾表達式 2){
//這是布爾表達式 2 為true會執行的語句
}else if(布爾表達式 3){
//這是布爾表達式 3 為true會執行的語句
}else{
//這是以上布爾表達式都為false會執行的語句
}示例:
package ProcessControl.OrderProcess;
import java.util.Scanner;
public class IfDemo_2 {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
System.out.println("請輸入您本次考試的成績:");
double score = s.nextDouble();
if(score==100){
System.out.println("恭喜你獲得了滿分!");
}else if((score<100)&&(score>=80)){
System.out.println("考的不錯哦!");
bu }else if((score<80)&&(score>=60)){
System.out.println("還需要繼續加油!");
}else if((score>=0)&&(score<60)){
System.out.println("考成這樣你還睡得着覺!!!");
}else{
System.out.println("輸入內容不合法");
}
}
} -
嵌套的 if 結構
if(布爾表達式 1){
//這是布爾表達式為true會執行的語句
if(布爾表達式 2){
//這是布爾表達式 2為true會執行的語句
}else{
//這是布爾表達式 2為false會執行的語句
}
}else{
//這是布爾表達式為false會執行的語句
} -
switch多選擇結構
多看看源碼學習編程思路 此處可以根據IDEA的反編譯功能多看看源碼
-
wsitch case 語句判斷一個變量與一系列值中某個值是否相等,每個值稱為一個分支
-
switch 語言中的變量類型可以是:
-
byte, short, int, char
-
String類型(從Java SE7開始),同時case標簽必須為字符串常量或者字面量
-
格式:
switch(expression){
case value:
//語句
break;
case value:
//語句
break;
case value:
//語句
break; //可選
// 可以由任意數量的case語句
default: //可選
//語句
} -
4.循環結構
-
while循環
while(布爾表達式){
// 循環內容
}-
只要布爾表達式為true,就會一直循環里面的內容
-
由於大多數情況需要程序停止的,需要一個讓 表達式失效的方法 來結束循環
-
有點程序需要一直循環,比如服務器的請求響應監聽
-
循環條件一直為true就會死循環,我們應該避免
-
思考計算 1+2+...+100 = ?
-
-
do...while循環
do{
// 代碼語句
}while(布爾表達式);-
對應do...while循環,若條件不滿足,則不能進入循環,但有時候即使不滿足條件,也需要至少執行一次循環體的時候,會用到
-
do...while循環至少執行一次循環體
do...while循環 與 while 循環區別
-
while先判斷后執行,do...while 先執行后判斷,因此do...while 循環至少循環一次。
-
-
-
for循環
-
for循環時支持迭代的一種通用結構,最有效,靈活的循環結構
-
for循環的循環次數再執行之前就已經確定
for(初始化;布爾表達式;迭代){
// 循環體
}-
練習
-
計算 0 - 100 之間的奇數與偶數和
-
用while或for循環輸出1-10000之間能被5整除的數,並且每行輸出3個
-
打印乘法表
-
-
-
-
主要用於數組中的增強型for循環(Java5 引入)
-
先了解,后面數組會重點運用
-
聲明語句:聲明新的局部變量,該變量的類型必須與數組元素的類型相匹配。
-
新的局部變量的作用域限定在循環語句這塊,作用時其值與數組元素的值相等
-
表達式:表達式時要訪問的數組名,或者是返回值為數組的方法
for(聲明語句:表達式){
//循環體
}
例子:
for(int n:numbers){
// n 的類型要與數組numbers中的元素相匹配
// n 的作用域限定在 函數體 這塊
} -
5.break & continue
-
break 在任何循環的主體部分,均可以用 break 控制循環的流程,break 用於強行退出循環。
-
continue 在循環體語句體中,用於跳出本次循環,不會執行循環體中尚未執行的語句,進入下一次循環的判定。
-
關於goto關鍵字
-
goto 關鍵字很早就在程序設計語言中出現。盡管java保留了這個關鍵字,但並未得到正式使用。帶標簽的continue 和break 能看到goto的影子
-
標簽是指后面跟一個冒號的標識符,如 label:
-
在循環之前設置標簽的唯一理由:希望在該循環中嵌套另一個循環,由於break 和 continue只能中斷當前循環,若配合標簽使用,就可以中斷到存在標簽的地方。
// 打印101-105之所有質數
int count = 0;
outer:for(int i=101;i<150;i++){
for(int j = 2;j<i/2;j++){
if(i%j==0){
continue outer; // 從內部循環跳到外部
}
}
System.out.print(i+"\t")
}
-
6.練習
-
需求:打印三角形
// 主要思路是將它划分為三個三角形進行打印
package ProcessControl.OrderProcess;
public class ProcessTest {
public static void main(String[] args) {
for (int i = 1; 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();
}
}
}