JVM не отвечает, когда пользователь нажимает кнопку 1/2, она просто застревает

введите здесь описание изображения

Я пытаюсь создать программу, в которой пользователь может вводить дату, например: 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);
                }

            }

person Completely_new_to_java    schedule 28.03.2014    source источник
comment
Вместо этого используйте JSpinner с SpinnerDateModel. Советы: 1) Чтобы быстрее получить помощь, опубликуйте MCVE (минимальный полный и проверяемый пример). 2) Используйте последовательный и логичный отступ для блоков кода. Отступ кода предназначен для того, чтобы помочь людям понять ход программы.   -  person Andrew Thompson    schedule 28.03.2014
comment
когда я нажимаю кнопку 1/2, он просто складывается. Если под «стеком» вы подразумеваете, что приложение вызывает трассировку стека, то… Всегда копируйте/вставляйте ошибки и исключения.   -  person Andrew Thompson    schedule 28.03.2014
comment
@AndrewThompson: Я предполагаю, что он застрял с орфографической ошибкой, что он совершенно новичок в правописании, а также в Java.   -  person Hovercraft Full Of Eels    schedule 29.03.2014
comment
Извините за орфографические ошибки. Я имею в виду застрял. Не могу принять меры или закрыть программу.   -  person Completely_new_to_java    schedule 29.03.2014
comment
Вы пытались исправить свой код в соответствии с предложением пользователя 2275785 в его ответе ниже?   -  person Hovercraft Full Of Eels    schedule 29.03.2014
comment
Я сделал, но все еще работает неправильно. Пользователь по-прежнему может ввести дату следующим образом: 44-15-2014.   -  person Completely_new_to_java    schedule 29.03.2014


Ответы (2)


Я думаю, что ваша проблема в этом цикле:

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

который никогда не закончится. Удалите этот пустой цикл или измените его на:

for ( int i = 1; i<31;i++);
person user2275785    schedule 28.03.2014
comment
Спасибо, чувак. Я работал, но все еще есть некоторые проблемы. Как дата 40-13-2014. Что не является правильной датой. - person Completely_new_to_java; 29.03.2014
comment
Проверка достоверности даты - person user2275785; 29.03.2014

Я не совсем понимаю, что вы имеете в виду под 1/2 стека. Но если вы сделаете строку из некоторых переменных

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

а затем измените переменные, это не повлияет на строку. Таким образом, вы все равно получите ту же дату обратно.

И совет для лучшей читабельности делает ваши переменные верблюжьими. Поэтому вместо Date назовите его date.

person Mitchell Olsthoorn    schedule 28.03.2014
comment
Я имел в виду, если я нажму на кнопку 1 или 2, он не ответит. Просто застрял. Никакой реакции. - person Completely_new_to_java; 29.03.2014
comment
Вы привязываете прослушиватель событий к кнопке? потому что иначе кнопка очень бесполезна. - person Mitchell Olsthoorn; 29.03.2014
comment
да, у него есть прослушиватель событий. эта проблема сейчас решена. это было из-за того, что петля никогда не заканчивается. for (int i = 1; i‹31;); но по-прежнему возникают проблемы с неверной датой, например 54-30-2014. - person Completely_new_to_java; 29.03.2014