我今天正在和我的学生一起运行一个程序,并且我们来到一个方法,要求他们创建条件语句,在周日到周六对应的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'语句相关联。 –