java基礎--程式流程式控制制 【目錄】 一. 順序結構(巨集觀上) 二. 分支結構/選擇結構(if,switch) 2.1 if語句 2.2 switch語句 三. 迴圈結構 3.1 for迴圈 3.2 while迴圈 其他。。。。。。。 一些關鍵瞭解內容 for迴圈中,for( )括弧里定義的變數, ...
java基礎--程式流程式控制制
【目錄】
一. 順序結構(巨集觀上)
二. 分支結構/選擇結構(if,switch)
2.1 if語句
2.2 switch語句
三. 迴圈結構
3.1 for迴圈
3.2 while迴圈
其他。。。。。。。
一些關鍵瞭解內容
- for迴圈中,for( )括弧里定義的變數,迴圈外無法進行訪問。
- break:終止當前的迴圈體
- 在switch中,case下若沒有break則會貫穿,主要用於在滿足多種場景下輸出相同結果。
- 鍵盤錄入的方法(需熟記):
- 導入包:import java.util.Scanner;
- 創建掃描對象:Scanner s = new Scanner(System.in);註:同類下,創建一次即可多次使用。
- 調用掃描對象的方法,從鍵盤獲得數據:s.nextInt(); //獲取int值,如 int i = nextInt(); 用s.next()獲取字元串
- next和nextLine的區別:
next() 只讀取回車之前的內容 nextLine() 讀取內容和回車,如果之前有回車沒有被讀取,那麼剩下的回車直接會被讀取 Scanner s = new Scanner(System.in); String s1 = s.next(); System.out.println(s1); //next()方法只會讀取回車之前的內容,所以,還有一個回車符剩餘,將被nextLine方法讀取到 String s2 = s.nextLine(); System.out.println(s2); //讀取到上一次next方法剩餘的回車符之後,s2就是一個回車符,然後程式就把回車符輸出,就結束了
一. 順序結構
- 語句按照順序依次執行
- 單純的順序結構的程式基本不存在
但是,大型程式從巨集觀上來看的話,各個模塊之間也是呈現順序結構
二. 分支結構
- 分支結構:也稱選擇結構,程式根據條件表達式的值來決定程式的走向
2.1 If語句
if語句的第一種格式
1 if(條件表達式){
2 語句體;
3 }
4 ...//其它語句
if語句的第二種格式
if(條件表達式){
語句體1;
}else{
語句體2;
}
...//其它語句
if語句的第三種格式
if(條件表達式1){
語句體1;
}else if(條件表達式2){
語句體2;
}else if(條件表達式3){
語句體3;
}
...
else{
語句體n;
}
if語句註意事項:
- if後的括弧內一定是布爾值或者布爾表達式
- 第二種格式與三元運算符的區別:三元運算符運算完要有值出現,並且可以寫在其他表達式中
- if的語句塊中可以加多條語句,實現更複雜的邏輯
- if/else後邊的大括弧可以省略,此時if語句只能控制到第一個分號結束;如果有多條語句的話,不能省略
建議不要省略大括弧
如何從鍵盤錄入數據?
import java.util.Scanner;
Scanner s = new Scanner(System.in);
s.nextInt(); //獲取int值,用s.next()獲取字元串
2.2 switch語句
格式:
switch(表達式或變數){
case 取值1:
語句體1;
break;
case 取值2:
語句體2;
break;
…
default:
語句體n+1;
break;
}
switch註意事項:
- switch語句表達式的類型有:byte,short,int,char,String(1.7之後才支持)和枚舉類型
- case之間與default沒有順序:case相當於入口點,沒有匹配的case將執行default,default也不是必須的
- 結束switch語句的情況:遇到break或執行到switch語句結束
- 如果匹配的case或者default沒有對應的break,那麼程式會繼續向下執行,運行可以執行的語句,直到遇到break或者switch結尾
switch案例
從鍵盤輸入月份數字,顯示是第幾個季度。
/*
從鍵盤輸入月份數字,顯示是第幾個季度
*/
import java.util.Scanner;
public class SwitchDemo2{
public static void main(String[] args){
Scanner s = new Scanner(System.in);
System.out.print("請輸入月份:");
int month = s.nextInt();
switch(month){
case 1:{
// System.out.println(month + "屬於第一季度");
// break;
}
case 2:{
// System.out.println(month + "屬於第一季度");
// break;
}
case 3:{
System.out.println(month + "屬於第一季度");
break;
}
case 4:{
// System.out.println(month + "屬於第二季度");
// break;
}
case 5:{
// System.out.println(month + "屬於第二季度");
// break;
}
case 6:{
System.out.println(month + "屬於第二季度");
break;
}
case 7:{
// System.out.println(month + "屬於第三季度");
// break;
}
case 8:{
// System.out.println(month + "屬於第三季度");
// break;
}
case 9:{
System.out.println(month + "屬於第三季度");
break;
}
case 10:{
// System.out.println(month + "屬於第四季度");
// break;
}
case 11:{
// System.out.println(month + "屬於第四季度");
// break;
}
case 12:{
System.out.println(month + "屬於第四季度");
break;
}
default :{
System.out.println("輸入的月份有誤");
break;
}
}
}
}
三. 迴圈結構
概述:
- 迴圈語句可以在滿足迴圈條件的情況下,反覆執行某一段代碼
- 被反覆執行的代碼稱為迴圈體
- 需要在適當的時候,把迴圈條件改為假,從而結束迴圈,否則迴圈將一直執行下去,形成死迴圈
- 完整的迴圈應該包含以下四個部分:
- 初始化語句:初始化工作,在迴圈體開始之前執行
- 迴圈條件:一個boolean表達式,決定是否執行迴圈體
- 迴圈體:反覆執行的部分
- 迭代語句:在迴圈體執行完之後執行,然後再去判斷迴圈條件,一般用來控制迴圈條件中的變數,使迴圈在合適的時候結束
3.1 for迴圈
格式
for(初始化表達式;條件表達式;迴圈變數控制語句){
迴圈體語句;
}
格式說明:
for運行的順序:
- 執行初始化表達式,只執行一次,通常是定義迴圈變數語句
- 判斷迴圈條件:為真就往下執行;為假就結束迴圈
- 執行迴圈體語句
- 執行迴圈變數控制語句,一般是迴圈變數的自增或自減
- 回到第2步,重覆這個過程,直到為假時結束
for迴圈註意事項:
- 迴圈變數通常定義為int型,因為最常用的就是int型
- 迴圈條件判斷的結果是boolean類型值
- 小括弧中的分號不能寫成中文的分號
- 如果迴圈體只有一條語句的話,可以省略大括弧,但建議寫全
- 迴圈變數控制語句不必每次改變1,根據情況,可以是任意值
for迴圈求和思想
求和思想:在迴圈體之外定義一個變數,迴圈體中不斷的往這個變數中追加。
//求1-10所有數之和
public class ForDemo{
public static void main(String[] args){
int sum = 0;
for (int i = 1;i <= 10;i ++){
sum += i;
}
System.out.println(sum);
}
}
for迴圈練習
/*
在1-100之間,若是3的倍數,則在它之後輸出中文“三”,若是5的倍數,
則在它之後輸出中文“五”,若是7的倍數,則在它之後輸出中文“七”
*/
public class ForDemo{
public static void main(String[] args){
for(int i = 1;i<=100;i++){
System.out.print(i);
if(i % 3 == 0){
System.out.print(" 三");
}
if(i % 5 == 0){
System.out.print(" 五");
}
if(i % 7 == 0){
System.out.print(" 七");
}
System.out.println();
}
}
}
3.2 while迴圈
格式
[初始化部分]
while(條件表達式){
迴圈體語句;
[迴圈變數控制語句]
}
執行流程:
- 執行初始化語句(如果有的話)
- 判斷條件表達式真假:如果真,往下執行;如果假,結束迴圈
- 執行迴圈體語句
- 執行迴圈變數控制語句(如果有的話)
- 返回第2步,重覆執行,直到條件為假,結束迴圈
break:終止當前的迴圈體
for 和 while 的應用場景
- 當明確知道迴圈的範圍的時候,通常使用for
- 當不明確迴圈次數的時候,for和while都可以,通常使用while
案例:
已知:珠穆朗瑪峰的高度是:8848米,假設有一張足夠大的紙,厚度是0.01米,請問:這張紙摺疊多少次可以保證厚度不低於珠穆朗瑪峰的高度?
public class WhileDemo{
public static void main(String[] args){
int count = 0;
double hill = 8848.0;
double paper = 0.01;
while(paper < hill){
count++;
paper = paper * 2;
System.out.println("當前摺疊的次數是: " + count + ",當前紙的厚度是: " + paper);
}
System.out.println("摺疊的次數是:"+count);
}
}
迴圈變數的使用問題
for迴圈的迴圈變數,一般情況下在迴圈外是不能訪問到的,因為它的作用域是在for迴圈的{}之內,但是可以通過把迴圈變數定義在外邊來實現這個功能;或者定義計數器
while迴圈本身就把迴圈變數定義在迴圈之外,所以沒有這個問題
/*
這是個錯誤的程式,for{}外面的i無法訪問
*/
for(int i = 0;i<10;i++){
...
}
System.out.println(i); //錯誤
int i = 0;
for(;i<10;i++){
...
}
System.out.println(i); //正確
for和while的應用場景
待補充。。。