【问题标题】:JVM does not respond when user clicks button 1/2, it just becomes stuck当用户单击按钮 1/2 时 JVM 没有响应,它只是卡住了
【发布时间】:2014-03-28 19:50:37
【问题描述】:

我正在尝试制作一个用户可以输入日期的程序,例如:28 -03 - 2014

这个和程序读取那个,给出明天的日期:29 - march - 2014。 程序必须检查:

  • 字符串最多 10 个。
  • 日期(2 位):1 - 31
  • 字符串:-
  • 月(两位数):1 - 12
  • 字符串:-
  • 年份:四位数

这是我的代码!

    public String month()
    {
            int month = 0;
            switch(month){
            case 1 :monthString = " Janauri";
                    break;
             case 2: monthString = "February"
    .......
    ublic String dateOfTomorrow(int day, int month, int year)

    {
    String Date =  day+ "-" + month+ "- " + year;
    day++;
    if(day > totalDaysInMonth(month));
    {// new  month
    day = 1;
    month++;
    if(month > 12)
    {//new year
    month= 1;
    year ++;
    }
  }
    return Date;

    }
        private boolean  totalDaysInMonth(int day)
        {
            if( day >= 1 && day < 31)
            {
                return true;
            }
            else {
                return false;
                }
        }


        public void actionPerformed(ActionEvent e)
            {
            for ( int i = 1; i<31;);
                String s = tf.getText();
                if ( e.getSource() == b1)
                {

                    l2.setText(s);

                }
                else if (e.getSource ()== b2)
                {
                    l2.setText(monthString);
                }

            }

【问题讨论】:

  • 使用 JSpinnerSpinnerDateModel 代替。 提示: 1) 为了尽快获得更好的帮助,请发布MCVE(最小完整且可验证的示例)。 2) 对代码块使用一致且符合逻辑的缩进。代码的缩进是为了帮助人们理解程序流程。
  • “当我点击按钮 1/2 时,它只是堆栈。” 如果“堆栈”是指应用程序导致堆栈跟踪,那么......总是复制/粘贴错误& 异常输出。
  • @AndrewThompson:我猜他拼错了“卡住”,他对拼写和 Java 完全陌生。
  • 抱歉拼写错误。我的意思是卡住了。无法采取行动 n 我可以关闭程序。
  • 您是否尝试按照 user2275785 在下面回答中的建议修复您的代码?

标签: java arrays swing user-interface actionevent


【解决方案1】:

我认为你的问题出在这个循环中:

for ( int i = 1; i<31;);

这永远不会结束。 删除那个空循环或将其更改为:

for ( int i = 1; i<31;i++);

【讨论】:

【解决方案2】:

我不太明白你所说的 1/2 堆栈是什么意思。但是如果你把一些变量做成一串

String Date =  day + "-" + month + "-" + year;

然后更改它对字符串没有任何影响的变量。 所以你仍然会得到相同的日期。

还有一个提高可读性的技巧可以让你的变量变成驼峰式。因此,不要将 Date 称为 date。

【讨论】:

  • 我的意思是如果我点击按钮 1 或 2 ,它不会响应。它只是卡住了。没有反应。
  • 您是否将事件侦听器附加到按钮?因为否则按钮是非常没用的。
  • 是的,它有事件监听器。现在这个问题已经解决了。这是因为循环永远不会结束。 for (int i = 1; i
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-08-10
  • 1970-01-01
  • 2016-06-07
  • 2022-01-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多