否则,若Java中的语句不起作用,我做错了什么?
所以我尝试用if-else-if语句编写一个简单的代码,但它不起作用。我以前只做过if else,现在我感到困惑了。这是代码。为什么它不接受我的else if否则,若Java中的语句不起作用,我做错了什么?,java,if-statement,Java,If Statement,所以我尝试用if-else-if语句编写一个简单的代码,但它不起作用。我以前只做过if else,现在我感到困惑了。这是代码。为什么它不接受我的else if import java.util.Scanner; public class DaysOfWeek { public static void main (String[]args) { Double day; System.out.print("Enter the day: "); Scann
import java.util.Scanner;
public class DaysOfWeek {
public static void main (String[]args) {
Double day;
System.out.print("Enter the day: ");
Scanner sc = new Scanner(System.in);
day = sc.nextDouble();
if (day.equals("Monday"));
{
System.out.println("Sounds like someone has a case of the Mondays!");
}
else if (day.equals("Wednesday"));
{
System.out.println("It's hump day! El ombligo!");
}
else if (day.equals("Friday"));
{
System.out.println("Finally. It's Friday!");
}
else {System.out.println("It's another day of the week.");}
}}
String day
和sc.nextLine()
代码>-如果你写的像
if (condition) {
}
这和其他条件无关。 获得一个双输入(
sc.nextDouble()
),然后将其与字符串进行比较。
这永远不会是真的,因此
else
将始终被称为谢谢大家在if-else-if行末尾快速指出我的分号。另外,谢谢你抓住了线而不是双倍,我知道这一部分,但忽略了它,因为我对if-else-if行的混淆太失望了。一旦我纠正了这两个问题,它就完全符合我的预期
字符串day和sc.nextLine()替换为Double,以便进行适当的比较
);已从if-else-if行的末尾删除
我还添加了一点,以便在输入的几天内使用各种选项
import java.util.Scanner;
public class DaysOfWeek{
public static void main (String[]args) {
String day;
System.out.print("Enter the day: ");
Scanner sc = new Scanner(System.in);
day = sc.nextLine();
if (day.equals("Monday")||day.equals("M")||day.equals("Mon.")||day.equals("Mon"))
{
System.out.println("Sounds like someone has a case of the Mondays!");
}
else if (day.equals("Wednesday")||day.equals("W")||day.equals("Wed.")||day.equals("Wed"))
{
System.out.println("It's hump day! El ombligo!");
}
else if (day.equals("Friday")||day.equals("F")||day.equals("Fri.")||day.equals("Fri"))
{
System.out.println("Finally. It's Friday!");
}
else {System.out.println("It's another day of the week.");}
}}
我想你想要的是
字符串
而不是双精度
Double
是一个浮点数,如1.25。它永远不会是“星期一”等等。您还需要删除每个if
语句后面的分号,正如提比略所说的那样……删除语句末尾的分号<代码>如果(日期等于(“星期五”)应该是else if(day.equals(“星期五”)if(day.equals(“星期一”)代码>=>if(day.equals(“星期一”)
删除semicolo@JonSkeet在我的日历上,星期一是0.577。进一步解释一下:if
语句后的分号有效地“结束”了if
语句“附加”的语句,这意味着什么也没有发生。{[stmts]}
使后续的else
子句在语法上无效(我认为)。除了双精度到字符串
更改之外,它仍然不能按预期工作;if/else
语句仍然不正确在if
行末尾的code>与else-if有很大关系,所以否决了错误的答案。噢,谢谢你指出这一点。在double/string之后没有进一步阅读。我对else-if行非常失望,以至于忽略了double。我将修复该问题并更正分号。我建议使用matches()
方法,而不是多个equals