天天看點

Java基礎文法(四)——程式邏輯控制

文章目錄

  • Java基礎文法(四)——程式邏輯控制
  • 一、順序結構
    • 1.什麼是順序結構?
    • 2.順序結構的示例
  • 二、選擇結構
  • 1. if 語句
  • (1)基本書寫格式
  • (2) 練習
    • 練習一
    • 練習二
    • 練習三
  • (3)注意事項
    • 1.懸垂 else 問題
    • 2. 代碼風格問題
    • 3. 分号問題
  • 2. switch .. case 語句
    • (1)基本文法
    • (2)代碼示例
  • 三、循環結構
  • 循環中的關鍵字
  • 1.while 循環語句
  • (1)基本文法格式
  • (2)練習
  • 2.for 循環語句
  • (1)基礎文法
  • 3.do ... while 循環語句
  • 四、輸入輸出的表示
  • 1.輸出到控制台
    • (2)注意點
    • (3)格式化輸出
  • 2.從鍵盤輸入
    • (1)使用Scanner 讀取字元串/整數/浮點數
    • (2)使用 Scanner 循環讀取 N 個數字
    • (3)Java輸入的建議
  • 五、猜數字遊戲的實作
    • 1.編寫過程
    • (1)生成随機數
    • (2)輸入你要猜的數字
    • (3)循環結構,進行數字比較
    • 2.完整代碼實作
  • 完!

接上篇Java基礎文法(三)——運算符

本次介紹内容大綱:

Java基礎文法(四)——程式邏輯控制

  程式按照我們代碼的書寫順序一行一行的執行,如果調整代碼的書寫順序, 則執行順序也發生變化

  下面我将舉兩個代碼的示例,帶大家了解一下順序結構的具體使用

代碼一:

Java基礎文法(四)——程式邏輯控制

編譯實作效果:

Java基礎文法(四)——程式邏輯控制

  按照我們所想的那樣,順序結構按照我們代碼書寫順序,一行一行執行代碼。列印出 I like Beijng

  如果我們改變列印順序,在順序結構下代碼的執行又是如何實作的呢?

代碼二:

Java基礎文法(四)——程式邏輯控制
Java基礎文法(四)——程式邏輯控制

  當我們改變代碼的順序,那麼執行時按照順序結構,列印的内容也會随之而改變。

書寫格式一
Java基礎文法(四)——程式邏輯控制
書寫格式二
Java基礎文法(四)——程式邏輯控制
書寫格式三 ----多分支的情況
Java基礎文法(四)——程式邏輯控制

  這裡的三種書寫規範,代表了 if 語句的多種情況。我們可以根據實際情況進行自主選擇。

  好了,接下來我們進行幾道選擇語句的練習程式設計題目.

題目要求:

判斷奇偶數

代碼實作:

public class Main {//判斷奇偶數public static void main(String[] args) {int num = 10;if (num % 2 == 0) { System.out.println("num 是偶數");} else { System.out.println("num 是奇數");}}}      

編譯實作的效果:

Java基礎文法(四)——程式邏輯控制

  我們使用了 if …else 語句來區分奇數、偶數,進而進行數字的奇偶判斷。

判定一個數字是正數還是負數
  public static void main(String[] args) {int num = 10;if (num > 0) {  System.out.println("num 是正數");} else if (num < 0) {  System.out.println("num 是負數");} else {  System.out.println("num 是 0");}}      

編譯效果實作:

Java基礎文法(四)——程式邏輯控制

  這裡我們就使用了多支選擇語句的用法,進行三個選擇時,用 if…else if…else 進行程式結構控制,達成我們想要實作的效果.

判定某一年份是否是閏年
    public static void main(String[] args) {int year = 2000;if (year % 100 == 0) {// 判定世紀閏年if (year % 400 == 0) {System.out.println("是閏年");} else {System.out.println("不是閏年");}} else {// 普通閏年if (year % 4 == 0) {System.out.println("是閏年");}}}      
Java基礎文法(四)——程式邏輯控制

  我們在這個練習題中,使用了if 語句的嵌套使用,進而更友善的達成我們的題目要求.

int x = 10;int y = 10;if (x == 10) 
   if (y == 10)
   System.out.println("aaa");else
 System.out.println("bbb");      

  if 後面可以不加上大括号,但是隻能執行跟在其後面的一條語句,在這個代碼中,我們視覺的看到 else 和第一個 if 相比對 , 但是 在不加大括号的情況下,else 隻和 最近的 if 相比對.

  還有,為了避免出現自己的判斷錯誤,盡量在需要加大括号的語句全部加上大括号(不要省略).

// 風格1  int x = 10;  if (x == 10) {  // 滿足條件  } else {  // 不滿足條件  }// 風格2  int x = 10;  if (x == 10) {  // 滿足條件  }  else  {  // 不滿足條件  }      

  在 Java 中盡管兩種代碼風格都是合法的,但是Java還是更推薦 風格1

  { 放在 if / else 同一行.

      int x = 20;  if (x == 10); {  System.out.println("hehe");  }
   // 運作結果hehe      

  我們可以看到在if()之後不小心加上了;,在此處多寫了一個 分号, 導緻分号成為了 if 語句的語句體, 而 { } 中的代碼已經成為了和一個 if 無關的代碼塊.

  這樣的錯誤我們要盡量避免.

2. switch … case 語句

Java基礎文法(四)——程式邏輯控制

int day = 1;switch(day) {case 1:System.out.println("星期一");break;case 2:System.out.println("星期二");break;case 3:System.out.println("星期三");break;case 4:System.out.println("星期四");break;case 5:System.out.println("星期五");break;case 6:System.out.println("星期六");break;case 7:System.out.println("星期日");break;default:System.out.println("輸入有誤");break; }      

  根據 switch 中值的不同, 會執行對應的 case 語句. 遇到 break 就會結束該 case 語句.

  如果 switch 中的值沒有比對的 case, 就會執行 default 中的語句.

代碼實作效果:

Java基礎文法(四)——程式邏輯控制

  我們建議一個 switch 語句最好都要帶上 default.且default的位置不固定.

注意事項1

break 不要遺漏, 否則會失去 “多分支選擇” 的效果

代碼示例:

public static void main(String[] args) {int day = 1;switch(day) {case 1:System.out.println("星期一");case 2:System.out.println("星期二");case 3:System.out.println("星期三");case 4:System.out.println("星期四");case 5:System.out.println("星期五");case 6:System.out.println("星期六");case 7:System.out.println("星期日");default:System.out.println("輸入有誤"); }}      

實作效果:

Java基礎文法(四)——程式邏輯控制

注意事項2

switch 中的值隻能是 整數|枚舉|字元|字元串

之前我們的代碼示例switch()中跟的都是 int 類型的資料

那麼switch()中的值可以是其他類型嗎?

我們對其它類型的資料進行試驗…

long
Java基礎文法(四)——程式邏輯控制

是以 switch ()中的資料不能是 long 類型

float
Java基礎文法(四)——程式邏輯控制

是以 switch ()中的資料不能是 float 類型

double
Java基礎文法(四)——程式邏輯控制

是以 switch ()中的資料不能是 double 類型

char
Java基礎文法(四)——程式邏輯控制
Java基礎文法(四)——程式邏輯控制

switch()中可以是 char 類型的資料

String
Java基礎文法(四)——程式邏輯控制
Java基礎文法(四)——程式邏輯控制

是以 switch()中的資料可以是 String 類型的.

總之,switch 中的值隻能是 整數|枚舉|字元|字元串.

注意事項3

switch 不能表達複雜的條件

如果是這樣的代碼:

Java基礎文法(四)——程式邏輯控制

  這樣的題目條件,明顯使用 if 語句表達更為友善 , 使用 switch 語句則無法表示.

break

功能:  break 的功能是讓循環提前結束,執行到 break 就會讓循環結束,直接跳出循環

coutinue

功能:  continue 的功能是跳過這次循環, 立即進入下次循環.

Java基礎文法(四)——程式邏輯控制

  了解了while 語句的文法結構,那麼我們來進行對 while 語句的代碼練習.

列印 1 - 10 的數字
Java基礎文法(四)——程式邏輯控制
Java基礎文法(四)——程式邏輯控制

計算 1 - 100 的和
Java基礎文法(四)——程式邏輯控制
Java基礎文法(四)——程式邏輯控制
1.和 if 類似, while 下面的語句可以不寫 { } , 但是不寫的時候隻能支援一條語句. 建議還是加上 { }
2.和 if 類似, while 後面的 { 建議和 while 寫在同一行.
3.和 if 類似, while 後面不要多寫 分号, 否則可能導緻循環不能正确執行.
Java基礎文法(四)——程式邏輯控制

  相比于 while 循環, for 循環将這三個部分合并在一起, 寫代碼時不容易遺漏.

  了解了 for 語句的文法結構,那麼我們來進行對 while 語句的代碼練習.

  我們将上面兩道 while 循環的練習題改成用for 循環來表示

Java基礎文法(四)——程式邏輯控制
Java基礎文法(四)——程式邏輯控制

Java基礎文法(四)——程式邏輯控制
Java基礎文法(四)——程式邏輯控制

3.do … while 循環語句

Java基礎文法(四)——程式邏輯控制

列印 1 -10的數字

Java基礎文法(四)——程式邏輯控制
Java基礎文法(四)——程式邏輯控制
  1. do while 循環最後的分号不要忘記
  1. 一般 do while 很少用到, 更推薦使用 for 和 while.

System.out.println(msg);

輸出一個字元串, 帶換行

System.out.print(msg);

輸出一個字元串, 不帶換行

System.out.printf(format, msg);

格式化輸出

println 輸出的内容自帶 \n, print 不帶 \n
printf 的格式化輸出方式和 C 語言的 printf 是基本一緻的.

什麼是格式化輸出?

将資料按以下類型(部分)進行輸出:

轉換符 類型 舉例
d 十進制整數 ( “%d” ,10)
x 十六進制整數 ("%x", 100)
f 單精度浮點數 ("%f",100.0)
s 字元串 ("%s",“abc”)
c 字元 ("%c",‘1’)

  我們隻是将部分格式化的資料列舉出來,具體的格式化類型請大家自行查找.這種格式化列印在C語言中十分常見.

首先我們需要導入 util 包

import java.util.Scanner; // 需要導入 util 包      
從鍵盤輸入一個整形:
public static void main(String[] args) {// 輸入一個整型Scanner scanner = new Scanner(System.in);int a=scanner.nextInt();// 輸入一個數列印一個數System.out.println(a);}      
Java基礎文法(四)——程式邏輯控制

這裡的 nextInt 是讀取一個整形.

Java基礎文法(四)——程式邏輯控制
從鍵盤輸入一個字元串:
public static void main(String[] args) {// 輸入一個字元串Scanner scanner = new Scanner(System.in);String a=scanner.nextLine();// 輸入一個字元串列印一個字元串System.out.println(a);}      
Java基礎文法(四)——程式邏輯控制

  這裡的 nextline —— 是輸入一行,且遇到空格不會中止讀取

Java基礎文法(四)——程式邏輯控制
從鍵盤輸入一個浮點數:
public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);double a = scanner.nextDouble();System.out.println(a);}      
Java基礎文法(四)——程式邏輯控制

  這裡的 nextDouble 是輸入一個雙精度浮點數 .

Java基礎文法(四)——程式邏輯控制

import java.util.Scanner; public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);while(scanner.hasNextInt()){int a = scanner.nextInt();System.out.println(a);}}      
Java基礎文法(四)——程式邏輯控制

我們實作多組輸入數字,最後ctrl + D 停止循環.

下面是hasNext 的具體使用

Java基礎文法(四)——程式邏輯控制

我們根據個人資訊,輸入輸出如下

Java基礎文法(四)——程式邏輯控制

輸入的類型依次是 字元串 整形 浮點型

顯示效果如下:

Java基礎文法(四)——程式邏輯控制

好,我們第二次改變輸入類型的順序.

Java基礎文法(四)——程式邏輯控制

這次我們在輸入時卻碰到了一個問題…

Java基礎文法(四)——程式邏輯控制

  我們在輸入整形資料18以後,按下回車,發現直接跳到了輸入浮點型資料的内容,字元串類型直接跳過了,這樣的輸入就存在了問題.

  我們可以當作 把在輸入整形後 的回車 當成了 輸入字元串類型的内容,是以跳過了輸入字元串.

  是以 對于 Java 的輸入我們建議:把輸入字元串放在最前面,字元串的前面不要輸入整形或其他類型的資料.

遊戲規則:

  系統自動生成一個随機整數(1-100), 然後由使用者輸入一個猜測的數字. 如果輸入的數字比該随機數小, 提示 “低 了”, 如果輸入的數字比該随機數大, 提示 “高了” , 如果輸入的數字和随機數相等, 則提示 “猜對了”

  下面是Random 的使用.

Java基礎文法(四)——程式邏輯控制
Java基礎文法(四)——程式邏輯控制
Java基礎文法(四)——程式邏輯控制

  好了,我們熟悉了Random 的使用,這個遊戲我們首先要生成一個 在 0-100範圍内的随機數

 Randnum randNum = new Random();
 int randNum = Randdom.nextInt(100);      

    Scanner scanner = new Scanner(System.in); int num = scanner.nextInt();      

  将你猜的數字與随機數比較,如果猜小了,列印“你猜小了”,猜大了,列印“你猜大了”,猜對了,列印“你猜對了”,然後跳出循環. 沒有猜對則一直比較.

  我們用while(true)來一直循環,當num== randNum 時 break跳出循環.

  Scanner scanner = new Scanner(System.in);

 while(true){System.out.print("請輸入要猜的數字:>");int num = scanner.nextInt();if(num<randNum){System.out.println("你猜小了");}else if(num>randNum){System.out.println("你猜大了");}else{System.out.println("你猜對了");break;}
 }      

import java.util.Random;import java.util.Scanner;public static void main13(String[] args) {Scanner scan=new Scanner(System.in);Random random = new Random();int randNum = random.nextInt(100);//System.out.println(randNum);while(true){System.out.println("請輸入數字:");int num=scan.nextInt();if(num<randNum){System.out.println("你猜小了");}else if(num==randNum){System.out.println("你猜對了");break;}else if(num>randNum){System.out.println("你猜大了");}}}      
Java基礎文法(四)——程式邏輯控制

  好了,Java基礎 – 程式邏輯控制的知識就分享到這裡,希望大家看完之後多多練習,感謝大家的欣賞!!!

我的Java基礎入門訓練有練習的題目,大家可以關注哦 !

繼續閱讀