否则,若Java中的语句不起作用,我做错了什么?

否则,若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

所以我尝试用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: ");
    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和else if行不应使用
    -如果你写的像

     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