Java的迴圈無慎特出,惟,if函數若無法使用得宜,恐未能將其使用得宜。
aa
1.先寫裡面,再寫外面
2.有問題的通常是if
3.什麼時候用for?什麼時候用while?
當你不知道要跑幾圈時,用while
當你知道你要跑幾缺的時候使用if
while (條件句) {
敘述句
}
不要忘了我們是怎麼檢查輸入的
import java.util.Scanner;
public class sc {
Scanner sc = new Scanner(System.in);
System.out.printf("Please enter grades:");
while (!sc.hasNextInt()) { //檢查是否為整數
.next();//丟棄不對的
scSystem.out.println("拜託告訴我");
}
int grade = sc.nextInt();
System.out.println("your grade is " + grade);
}
}
Please enter grades:不告訴你
拜託告訴我
No
拜託告訴我
100
your grade is 100
誒你是不是搞錯了,這章是while餒,怎麼在講if
就知道你忘了,如何寫好迴圈?
學好if!
回到正題,我們太習慣正向邏輯
但過於複雜的程式使用正向邏輯寫會很亂
並且難以閱讀
邏輯就只是把不做的事放在前面,
這樣不只能讓你好閱讀
更不用塞堆堆東西在if裡
while (條件句) {
if(條件){
敘述句;
break;
}
敘述句
}
import java.util.Scanner;
public class while1() {
Scanner sc = new Scanner(System.in);
System.out.printf("請輸入一個西元年(0以離開):");
while (true){
int year = sc.nextInt();
if(year == 0){
System.out.println("結束");
break;
}
boolean a = false;
if(year % 4 == 0 &&year%100!=0||year%400==0){
=true;
a }
if (a){
System.out.println("閏年");
}
else{
System.out.println("平年");
}
}
}
}
import java.util.Scanner;
public class while1() {
Scanner sc = new Scanner(System.in);
System.out.printf("請輸入一個西元年(0以離開):");
while (true) {
int year = sc.nextInt();
if (year != 0) {
boolean a = false;
if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
= true;
a }
if (a) {
System.out.println("閏年");
} else {
System.out.println("平年");
}
} else {
System.out.println("結束");
break;
}
}
}
不囉唆直看範例
public static void while2() {
Scanner sc = new Scanner(System.in);
String theather;
int popcorn;
boolean isPopcorn;
// 設定輸入
while (true) {
if (!sc.hasNextInt()) {
System.out.println("掰掰");
break;
}
= sc.nextInt();
popcorn = sc.next();
theather
= (popcorn == 1) ? true : false;// 設定需不需要抱米
isPopcorn String decision = (isPopcorn == true) ? "go to the first floor and then " : "";
System.out.print(decision);
// 電影院在哪
switch (theather) {
case "A":
System.out.print("go to the second floor.");
break;
case "B":
System.out.print("go to the second floor.");
break;
case "C":
System.out.print("go to the fourth floor.");
break;
case "D":
System.out.print("go to the fourth floor.");
break;
case "E":
System.out.print("go to the fifth floor.");
break;
}
}
.close();
sc}
他與while唯一不同的是他會先執行一次,即使條件件不符合
語法:
do{
敘述句}while(條件句)
上開提及當你知道具體需要跑幾缺時
for迴圈就會是你最好的工具
for (敘述句1;條件句;敘述句2) {
迴圈內敘述句}
敘述句1必定執行的,且只執行一次
滿足條件句執行迴圈內敘述句
最後執行敘述句2
你也可以寫成
1
敘述句for (;條件句;) {
迴圈內敘述句2
敘述句}
這裡看到,如果敘述句1、2皆為單純的敘述句,那何必使用for?
因此通常是這樣使用for
for(int i = 0; i < 要跑的圈數; i++){
迴圈內敘述句}
通常由0開始
不過身為一個R語言使用者,你可能想從1開始
條件句要改為<=。
非常經典的for迴圈
因為我們知道要跑的確切次數,使用for迴圈完美
public static void for1() {
int layer;
Scanner sc = new Scanner(System.in);
System.out.print("輸入欲列印的行數: ");
= sc.nextInt();
layer System.out.println(layer);
// 上半部的for迴圈,並使用print讓他們呈現於第一行
// 當初始值i不超過使用者輸入的layer時進入迴圈
for (int i = 1; i <= layer; i++) {
// 列印空白
for (int j = 1; j <= layer - i; j++) {
System.out.print(" ");
}
// 列印基數個
for (int k = 1; k <= (2 * i) - 1; k++) {
System.out.print("*");
}
System.out.println();
}
// 下半部的for迴圈
for (int i = layer - 1; i >= 1; i--) {
for (int j = 1; j <= layer - i; j++) {
System.out.print(" ");
}
for (int k = 1; k <= 2 * i - 1; k++) {
System.out.print("*");
}
System.out.println();
}
.close();
sc}