【问题标题】:My if-statements for the time are not working - getting an error message我当时的 if 语句不起作用 - 收到错误消息
【发布时间】:2016-02-09 10:33:32
【问题描述】:

我正在尝试使用 if 语句根据当前时间向用户显示问候消息。我已经设置了当前时间,但是无法将其用于 if 语句。

public class MyFrame extends JFrame {
    public MyFrame() {
        super("Greeting");
        setbounds(200, 200, 200, 150);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        Calendar cal = Calendar.getInstance();
        SimpleDateFormat sdf = new SimpleDateFormat("hh");
        JTextArea tx = new JTextArea(10,5);
        String myTime = sdf.format(cal.getTime());
        if (myTime < 12am && myTime > 12pm)
            tx.append("Good Morning");
        }
        if (myTime <12am && myTime > 12pm)
            tx.append("Good Afternoon");
        }
        JPanel pane = new JPanel();
        pane.add(tx);
        add(pane);
        setVisible(true);
    }
    public static void main(String [] args) {
        new MyFrame();
    }
}

【问题讨论】:

  • 您收到的错误信息是什么?
  • 12am12pm 不是有效的 java 标识符。
  • myTime &lt; 12am &amp;&amp; myTime &gt; 12pm??
  • 这么多语法错误我都看不懂
  • 您希望表达式12am 的类型是什么?

标签: java if-statement simpledateformat


【解决方案1】:

关于你的守卫,试试:

if (myTime < twelveAM)
    myGreeting = "Good Morning"
} else {
    myGreeting = "Good Afternoon"
}

tx.append(myGreeting);

如果 myTime 小于twelveAM 引用的值,则将附加“早安”。如果 myTime 不小于 twelveAM 引用的值,则流程将通过守卫并附加“下午好”。

请特别注意类型转换,您必须在进行比较之前在您的守卫中进行比较,如下面的 cmets 中所述。

【讨论】:

  • 首先,if (myTime &lt; 12am) 这是一个有效的声明吗?
  • myTime 是一个字符串,Java 不允许 12am 作为标识符
  • 他专门询问了他的if logic。我提供了对该特定问题的答案。 OP 需要自己解决变量命名和/或类型转换问题,他的 IDE 现在应该已经告诉他了。但作为奖励,我现在也为 OP 更正了变量命名。我当然可以为他写完整的代码,但我也想要他的薪水。
【解决方案2】:

这个说法不对

  if (myTime < 12am && myTime > 12pm)

你不能像那样比较字符串,你可以得到 24H 格式的时间,然后将其解析为整数以便进行比较。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-06-19
    • 2019-12-24
    • 1970-01-01
    • 2016-02-17
    • 2022-07-01
    • 2014-03-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多