1.無限迴圈
概念:
又叫死迴圈。迴圈一直停不下來。
for格式:
for(;;){
System.out.println("迴圈執行一直在列印內容");
}
解釋:
初始化語句可以空著不寫,表示迴圈之前不定義任何的控制變數。
條件判斷語句可以空著不寫,如果不寫,預設表示true,迴圈一直進行。
條件控制語句可以空著不寫,表示每次迴圈體執行完畢後,控制變數不做任何變化。
while格式:
while(true){
System.out.println("迴圈執行一直在列印內容");
}
解釋:
小括號裡面就不能省略了,true一定要寫出來,否則程式碼會報錯。
do...while格式:
do{
System.out.println("迴圈執行一直在列印內容");
}while(true);
解釋:
小括號裡面就不能省略了,true一定要寫出來,否則程式碼會報錯。
無限迴圈的注意事項:
- 最為常用的格式:while
- 無限迴圈下面不能再寫其他程式碼了,因為永遠執行不到。
2.條件控制語句
- break
- continue
break:
不能單獨存在的。可以用在switch和迴圈中,表示結束,跳出的意思。
程式碼示例:
//1.吃1~5號包子
for (int i = 1; i <= 5; i++) {
System.out.println("在吃第" + i + "個包子");
//2.吃完第三個的時候就不吃了
if(i == 3){
break;//結束整個迴圈。
}
}
continue:
不能單獨存在的。只能存在於迴圈當中。
表示:跳過本次迴圈,繼續執行下次迴圈。
程式碼示例:
//1.吃1~5號包子
for (int i = 1; i <= 5; i++) {
//2.第3個包子有蟲子就跳過,繼續吃下面的包子
if(i == 3){
//跳過本次迴圈(本次迴圈中,下面的程式碼就不執行了),繼續執行下次迴圈。
continue;
}
System.out.println("在吃第" + i + "個包子");
}
3. Random
Random跟Scanner一樣,也是Java提前寫好的類,我們不需要關心是如何實現的,只要直接使用就可以了。
使用步驟:
- 導包
import java.util.Random;
導包的動作必須出現在類定義的上邊。
- 建立物件
Random r = new Random ();
上面這個格式裡面,只有r是變數名,可以變,其他的都不允許變。
- 生成隨機數
int number = r.nextInt(隨機數的範圍);
上面這個格式裡面,只有number是變數名,可以變,其他的都不允許變。
隨機數範圍的特點:從0開始,不包含指定值。比如:引數為10,生成的範圍[0,10)
程式碼示例:
//1.導包
import java.util.Random;
public class RandomDemo1 {
public static void main(String[] args) {
//2.建立物件
Random r = new Random();
//3.生成隨機數
int number = r.nextInt(100);//包左不包右,包頭不包尾
//0 ~ 99
System.out.println(number);
}
}
4. 逢七過
需求:
朋友聚會的時候可能會玩一個遊戲:逢7過
遊戲規則:從任意一個數字開始報數,當你要報的數字是包含7或者是7的倍數時都要說過:過
使用程式在控制檯列印出1-100之間的滿足逢七必過規則的資料
舉例:
1 2 3 4 5 6 過 8 9 10 11 12 13 過 15 16 過 18 ...
程式碼示例:
/*朋友聚會的時候可能會玩一個遊戲:逢7過
遊戲規則:從任意一個數字開始報數,當你要報的數字是包含7或者是7的倍數時都要說過:過
需求:使用程式在控制檯列印出1-100之間的滿足逢七必過規則的資料*/
//分析:
//個位7 十位7 7倍數
//1 2 3 4 5 6 過 8 9 10 11 12 13 過 15 16 過 18 19 20 過....
//69 過 過 過 過 過 過... 80
//1.得到1~100之間的每一個數字
//開始:1
//結束:100
for (int i = 1; i <= 100; i++) {
//2.判斷每一個數字,如果符合規則,就列印過,如果不符合規則就列印真實的數字
if(i % 10 == 7 || i / 10 % 10 == 7 || i % 7 == 0){
System.out.println("過");
continue;
}
System.out.println(i);
}
5. 平方根
需求:
鍵盤錄入一個大於等於2的整數 x ,計算並返回 x 的 平方根 。結果只保留整數部分 ,小數部分將被捨去 。
程式碼示例:
/*需求:鍵盤錄入一個大於等於2的整數 x ,計算並返回 x 的 平方根 。
結果只保留整數部分 ,小數部分將被捨去 。*/
//分析:
//平方根 16的平方根4
// 4的平方根2
// 10
// 1 * 1 = 1 < 10
// 2 * 2 = 4 < 10
// 3 * 3 = 9 < 10
// 4 * 4 = 16 > 10
//推斷:10的平方根是在3~4之間。
// 20
// 1 * 1 = 1 < 20
// 2 * 2 = 4 < 20
// 3 * 3 = 9 < 20
// 4 * 4 = 16 < 20
// 5 * 5 = 25 > 20
//推斷:20的平方根是在4~5之間。
//在程式碼當中
//從1開始迴圈,拿著數字的平方跟原來的數字進行比較
//如果小於的,那麼繼續往後判斷
//如果相等,那麼當前數字就是平方根
//如果大於的,那麼前一個數字就是平方跟的整數部分
//1.鍵盤錄入一個整數
Scanner sc = new Scanner(System.in);
System.out.println("請輸入一個整數");
int number = sc.nextInt();
//2.從1開始迴圈判斷
//開始:1 結束: number
for (int i = 1; i <= number; i++) {
//用i * i 再跟number進行比較
if(i * i == number){
System.out.println(i + "就是" + number + "的平方根");
//一旦找到了,迴圈就可以停止了,後面的數字就不需要再找了,提高程式碼的執行效率。
break;
}else if(i * i > number){
System.out.println((i - 1) + "就是" + number + "平方根的整數部分");
break;
}
}
6.判斷是否為質數
需求:
鍵盤錄入一個正整數 x ,判斷該整數是否為一個質數。
程式碼示例:
//需求:鍵盤錄入一個正整數 x ,判斷該整數是否為一個質數。
//質數:
//如果一個整數只能被1和本身整除,那麼這個數就是質數。否則這個數叫做合數
//7 = 1 * 7 質數
//8 = 1 * 8 2 * 4 合數
//分析:
//1.鍵盤錄入一個正整數
//number
Scanner sc = new Scanner(System.in);
System.out.println("請輸入一個正整數");
int number = sc.nextInt();//9
//定義一個變數,表示標記
//標記著number是否為一個質數
//true: 是一個質數
//false : 不是一個質數
//表示最初就認為number是一個質數
boolean flag = true;
//2.判斷
//寫一個迴圈,從2開始判斷,一直判斷到number-1為止
//看這個範圍之內,有沒有數字可以被number整除
for (int i = 2; i < number; i++) {
//i 依次表示這個範圍之內的每一個數字
//看number是否能被i整除就可以了
if(number % i == 0){// 9 % 2 = 1
flag = false;
//System.out.println(number + "不是一個質數");
break;
}/*else{
System.out.println(number + "是一個質數");
}*/
}
//只有當這個迴圈結束了,表示這個範圍之內所有的數字都判斷完畢了
//此時才能斷定number是一個質數
if(flag){
System.out.println(number + "是一個質數");
}else{
System.out.println(number + "不是一個質數");
}
7. 猜數字小遊戲
需求:
程式自動生成一個1-100之間的隨機數,在程式碼中使用鍵盤錄入去猜出這個數字是多少?
要求:
使用迴圈猜,一直猜中為止。
思路分析:
- 生成一個1-100之間的隨機數
- 使用鍵盤錄入去猜出這個數字是多少
- 把反覆猜的程式碼寫在迴圈中
程式碼示例:
//1.生成一個1-100之間的隨機數
Random r = new Random();
int number = r.nextInt(100) + 1;// 0 ~ 99 + 1 --- 1 ~ 100
System.out.println(number);
//2.使用鍵盤錄入去猜出這個數字是多少?
Scanner sc = new Scanner(System.in);
while(true){
System.out.println("請輸入一個整數");
int guessNumber = sc.nextInt();
//3.比較
if(guessNumber > number){
System.out.println("您猜的數字大了");
}else if(guessNumber < number){
System.out.println("您猜的數字小了");
}else{
System.out.println("恭喜你,猜中了");
break;
}
}