迴圈高階綜合練習
無限迴圈和跳轉控制語句
無限迴圈
- 無限迴圈:迴圈一直停不下來。
格式:
for:
for(;;){
System.out.println("給女神表白");
}
while:
while(true){
System.out.println("女神答應我了");
}
do...while:
do{
System.out.println("女神答應我了");
}while(true);
注意事項
- 無限迴圈的下面不能再寫其它程式碼了,因為迴圈永遠停不下來,那麼下面的程式碼永遠執行不到。
跳轉控制語句
- 跳轉控制語句:在迴圈的過程中,跳到其他語句上執行。
練習
案例1:小老虎吃包子
小老虎吃包子,第三個包子有蟲子,跳過。
public class SkipLoopDemo1 {
public static void main(String[] args) {
//1.跳過某一次迴圈
for (int i = 1; i <= 5; i++) {
if(i == 3){
//結束本次迴圈,繼續下次迴圈。
continue;
}
System.out.println("小老虎在吃第" + i + "個包子");
}
}
}
案例2:小老虎吃包子
小老虎吃包子,吃完第三個就飽了。
public class SkipLoopDemo2 {
public static void main(String[] args) {
//2.結束整個迴圈
for (int i = 1; i <= 5; i++) {
System.out.println("小老虎在吃第" + i + "個包子");
if(i == 3){
//結束整個迴圈
break;
}
}
}
}
總結:
- continue:跳過本次迴圈,繼續執行下次迴圈。
- break:結束整個迴圈。
練習(4.隨機數)
案例1:逢7過
朋友聚會的時候可能會玩一個遊戲: 逢7過
遊戲規則:從任意一個數字開始報數,當你要報的數字是包含7或者是7的倍數時都要說:過
需求:使用程式在控制檯列印出1-100之間的滿足逢七必過規則的資料
public class LoopTest1 {
public static void main(String[] args) {
/*朋友聚會的時候可能會玩一個遊戲: 逢7過
遊戲規則:從任意一個數字開始報數,當你要報的數字是包含7或者是7的倍數時都要說:過
需求:使用程式在控制檯列印出1-100之間的滿足逢七必過規則的資料
*/
//分析:
//個位7 十位7 7倍數
//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);
}
}
}
案例2:求平方根
需求:鍵盤錄入一個大於等於2的整數x,計算並返回x的平方根。
結果只保留整數部分,小數部分將被捨去。
import java.util.Scanner;
public class LoopTest2 {
public static void main(String[] args) {
/*需求:鍵盤錄入一個大於等於2的整數x,計算並返回x的平方根。
結果只保留整數部分,小數部分將被捨去。
*/
//分析:
//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;
}
}
}
}
案例3:求質數
需求:鍵盤錄入一個正整數x,判斷該整數是否為一個質數。
基礎思路:
import java.util.Scanner;
public class LoopTest3 {
public static void main(String[] args) {
//需求:鍵盤錄入一個正整數x,判斷該整數是否為一個質數。
//1.鍵盤錄入一個正整數
Scanner sc = new Scanner(System.in);
System.out.println("請輸入一個正整數");
int number = sc.nextInt();
//定義一個變數,表示標記
//標記著number是一個質數
//true:是一個質數
//false:不是一個質數
boolean flag = true;
//2.判斷
//寫一個迴圈,從2開始判斷,一直判斷到number-1為止
//看這個範圍之內,有沒有數字可以被number整除
for (int i = 2; i < number; i++) {
//i 依次表示這個範圍之內的每一個數字
//看number是否能被i整除
if(number % i == 0){
flag = false;
break;
}
}
//只有當迴圈結束了,表示這個範圍之內所有的數字都判斷完畢了
//此時才能斷定number是一個質數
if(flag){
System.out.println(number + "是一個質數");
}else{
System.out.println(number + "不是一個質數");
}
}
}
簡化思路(用於提高程式的執行效率):
import java.util.Scanner;
public class LoopTest4 {
public static void main(String[] args) {
//思路:
//81
//1*81
//3*27
//9*9
//以81的平方根9,為中心
//假設a * b = 81
//那麼a和b中,其中有一個必定是小於等於9的
//另一個是大於等於9的
//假設,都是大於9 --- 9.1 * 9.1 > 81
//假設,都是小於9 --- 8.9 * 8.9 < 81
//其中一個數字一定是小於等於平方根
//另一個數字一定大於等於平方根
Scanner sc = new Scanner(System.in);
System.out.println("請輸入一個整數");
int number = sc.nextInt();
boolean flag = true;
for (int i = 1; i <= number; i++) {
if(i * i >= number){
for(int a = 2; a <= i;a++){
if(number % a == 0){
flag = false;
break;
}
}
if(flag){
System.out.println(number + "是一個質數");
}else{
System.out.println(number + "不是一個質數");
}
break;
}
}
}
}
案例4:猜數字小遊戲
-
獲取隨機數:Java幫我們寫好一個類叫Random,這個類就可以生成一個隨機數。
-
使用步驟:
-
導包 --- Random這個類在哪
import java.util.Random; //導包的動作必須出現在類定義的上邊。
-
建立物件 --- 表示我要開始用Random這個類了
Random r = new Random (); //上面這個格式裡面,只有r是變數名,可以變,其他的都不允許變。
-
生成隨機數 --- 真正開始幹活
int number = r.nextInt(隨機數範圍); //上面這個格式裡面,只有number是變數名,可以變,其他的都不允許變。
範例1:
import java.util.Random; public class LoopTest5 { public static void main(String[] args) { //先獲取一個隨機數。 //範圍:0~100 //1.導包 //2.建立物件 Random r = new Random(); //3.生成隨機數 //判斷技巧: //在小括號中,書寫的是生成隨機數的範圍 //這個範圍一定是從0開始的 //到這個數-1結束 //口訣:包頭不包尾,包左不包右 int number = r.nextInt(100);//0 ~99 System.out.println(number); } }
範例2:
import java.util.Random; public class LoopTest6 { public static void main(String[] args) { //需求: //隨機數範圍:1-100 //方法1. Random r = new Random(); int number1 = r.nextInt(1,101);//1~100 System.out.println(number1); //方法2: //1.讓這個範圍頭尾都減去一個值,讓這個範圍從0開始 //2.尾巴+1 //3.最終的結果,再加上第一步減去的值 int number2 = r.nextInt(100) + 1; System.out.println(number2); } }
-
需求:程式自動生成一個1-100之間的隨機數字,使用程式實現猜出這個數字是多少?
import java.util.Random;
import java.util.Scanner;
public class LoopTest7 {
public static void main(String[] args) {
//需求:程式自動生成一個1-100之間的隨機數字,使用程式實現猜出這個數字是多少?
//擴充套件需求:加一個保底機制,10次猜不中,直接顯示失敗
//注意事項:
//1.生成隨機數的程式碼int number = r.nextInt(1,101);
//不能寫在迴圈的裡面,否則每一次都會產生一個新的隨機數
//2.抽獎機制
//保底 xx次
//計數器
//用來統計當前已經猜了多少次
int count = 0;
//分析:
//1.生成一個1-100之間的隨機數字
Random r = new Random();
int number = r.nextInt(1,101);
//2.猜這個數字是多少
Scanner sc = new Scanner(System.in);
while (true){
System.out.println("請輸入你要猜的數字");
int guessNumber = sc.nextInt();
//3.判斷兩個數字給出不同的提示
//猜的數字大了,提示 大了
//猜的數字笑了,提示 小了
//猜的數字一樣,提示 猜中了
count++;
if(count == 10){
System.out.println("遊戲失敗");
break;
}
if(guessNumber > number){
System.out.println("大了");
}else if(guessNumber < number){
System.out.println("小了");
}else{
System.out.println("猜中了");
break;
}
}
}
}