我今天正在和我的學生一起運行一個程序,並且我們來到一個方法,要求他們創建條件語句,在週日到週六對應的1 - 7輸入後的星期幾提示用戶。爲什麼我的if-chain不停止?
一位學生想出下面的代碼打印出「星期四」,但它也打印出else語句。我不知道爲什麼它不停止在d == 5.但是,當我改變方法返回一個字符串,並讓每個if語句返回一個字符串像「星期天」它的工作。代碼如下。爲什麼程序不能停止使用void方法,而停止使用String方法?
public static void dayOfWeek(int d) //This did not stop at d == 5.
{
if (d == 1)
{
System.out.println("Sunday");
}
if (d == 2)
{
System.out.println("Monday");
}
if (d == 3)
{
System.out.println("Tuesday");
}
if (d == 4)
{
System.out.println("Wednesday");
}
if (d == 5)
{
System.out.println("Thursday");
}
if (d == 6)
{
System.out.println("Friday");
}
if (d == 7)
{
System.out.println("Saturday");
}
else
{
System.out.println("Oops! Number must be between 1 and 7");
}
}
public static String dayOfWeek(int d) //This worked at d == 5.
{
if (d == 1)
{
return "Sunday";
}
if (d == 2)
{
return "Monday";
}
if (d == 3)
{
return "Tuesday";
}
if (d == 4)
{
return "Wednesday";
}
if (d == 5)
{
return "Thursday";
}
if (d == 6)
{
return "Friday";
}
if (d == 7)
{
return "Saturday";
}
else
{
return "Oops! Number must be between 1 and 7";
}
}
爲什麼要呢?你爲什麼認爲'else'屬於另一個'if's,而不僅僅是最後一個呢? – Tom
在這種情況下沒有'if鏈'。你有一堆連續的,但獨立的ifs,最後,如果與另一個,如果單獨屬於那個決賽。那麼會發生什麼呢,第一個如果運行,不管第二個運行的是什麼,不管第三個運行的是什麼,直到最後一個有一個else和一個不匹配的條件,所以你看到else的輸出。 – pvg
第二個例子只是因爲返回語句而不是因爲返回字符串的方法。但是@Tom聲明'else'塊只與最後一個'if'語句相關聯。 –