需求:需要打印一行字符串"今天天氣特別好",100次
就需要將該語句打印100遍System.out.println("hellogzitcast");
那麼如何解決該問題?
Java提供個一個稱之爲循環的結構,用來控制一個操作的重複執行。
int count = 0;
while (count < 100) {
System.out.println("今天天氣特別好");
count++;
}
System.out.println("over");
變量count初始化值爲0,循環檢查count<100是否爲true,如果爲true執行循環體(while後{}之間的語句),輸出"hellogzitcast"語句,然後count自增一,重複循環,直到count是100時,也就是count<100爲false時,循環停止。執行循環之後的下一條語句。
Java提供了三種類型的循環語句:while循環,do-while循環和for循環。
1、while語句格式: while(條件表達式) { 執行語句; }
|
定義需求:想要打印5次helloworld
public static void main(String[] args) {
System.out.println("hello world");
System.out.println("hello world");
System.out.println("hello world");
System.out.println("hello world");
System.out.println("hello world");
}
第二種方式
public static void main(String[] args) {
int x = 0;
while (x < 5) {
System.out.println("hello java ");
}
}
如果是在dos裏編譯和運行,是不會停止,除非系統死機。需要ctrl+c來結束。
這就是真循環或者死循環。因爲x<5永遠爲真。
public static void main(String[] args) {
int x = 0;
while (x < 5) {
System.out.println("hello java ");
x++;
}
}
讓x自增,那麼就會有不滿足條件的時候。循環就會結束。
注意:要精確控制循環的次數。常犯錯誤是是循環多執行一次或者少執行一次。
例如會執行101次,想要執行100次,要麼是count初始值爲1,然後count<=100
要麼是count初始值爲0,coung<100
int count = 0;
while (count <=100) {
System.out.println("hello");
count++;
}
System.out.println("over");
猜數字遊戲:
編寫程序隨即生成一個0-100之間的隨機數。程序提示用戶輸入一個數字,不停猜測,直到猜對爲止。最後輸出猜測的數字,和猜測的次數。並且如果沒有猜中要提示用戶輸入的值是大了還是小了。
思考:
如何生成1-100之間隨機數?
(int)(Math.random()*100)+1;
如何提示用戶輸入數字,
Scanner sc=new Scanner(System.in);
int guessNum= sc.nextInt();
需要將隨機數和用戶輸入的數字進行比較。
猜一次:
Scanner sc = new Scanner(System.in);
int num = (int)(Math.random()*100)+1;
System.out.println("請輸入0-100之間整數");
int guessNum = sc.nextInt();
if (guessNum == num) {
System.out.println("中啦");
} else if (guessNum < num) {
System.out.println("小啦");
} else {
System.out.println("大了");
}
這個程序只能才一次,如何讓用戶重複輸入直到猜對?
可以使用while循環
public static void main(String[] args) {
int num = (int)(Math.random()*100)+1;
Scanner sc = new Scanner(System.in);
while (true) {
System.out.println("請輸入1-100之間整數");
int guessNum = sc.nextInt();
if (guessNum == num) {
System.out.println("中啦");
} else if (guessNum < num) {
System.out.println("小啦");
} else {
System.out.println("大了");
}
}
}
該方案發現了問題,雖然實現了讓用戶不停的輸入,但是即使猜中了程序也不會停止。
那麼就需要控制循環次數了。也就是while()括號中的條件表達式。當用戶猜測的數和系統生成的數字不相等時,就需要繼續循環。
int num = (int)(Math.random()*100)+1;
Scanner sc = new Scanner(System.in);
int guessNum = -1;
while (guessNum != num) {
System.out.println("請輸入1-100之間整數");
guessNum = sc.nextInt();
if (guessNum == num) {
System.out.println("中啦");
} else if (guessNum < num) {
System.out.println("小啦");
} else {
System.out.println("大了");
}
}
爲什麼將guessNum初始化值爲-1?因爲如果初始化爲0到100之間程序會出錯,因爲可能是要猜的數。
1:首先程序生成了一個隨機數
2:用戶輸入一個數字
3:循環檢查用戶數字和隨機數是否相同,知道相同位置,循環結束