2014-02-07 2 views
0

Я пытаюсь создать программу, которая работает как «калькулятор математической помощи», и она задает вам вопросы. У меня есть кнопка на калькуляторе, чтобы задать вам новый вопрос, и я хочу задать максимум десять вопросов. Поэтому я решил, почему бы не создать цикл for, в котором кнопка, задающая новые вопросы, вызывает прирост, который затем подскажет новый вопрос. ПРОБЛЕМА: по какой-то причине, если я не сделаю это i ++ в цикле for, это само. Моя программа зависает. Нет синтаксиса или ошибок времени выполнения, но программа java зависает. Я думаю, теоретически это сработает, но я делаю что-то неправильно?Замораживание программы при запуске

for(int i = 0; i < 10;){ 
if(e.getSource() == cmdNew){ 
i++; 
} 
+5

Что делать, если они не равны? –

+0

Затем он остается одним из текущих вопросов? – Kalkrin

+1

Ваш 'i ++', кажется, находится внутри блока 'if'. Если вы никогда не войдете в блок 'if',' i' останется на '0', а' i <10' никогда не станет «ложным». –

ответ

1

Ваш прирост в неправильном месте.

for(int i = 0; i < 10; i++) { 
    if(e.getSource() == cmdNew) { 

    } 
} 
+0

Но с этим, то петля все происходит сразу еще до нажатия кнопки? – Kalkrin

+0

Это означает, что оператор if никогда не вводится. Значение e.getSource() никогда не совпадает с cmdNew –

+1

Спасибо, я смог исправить это. – Kalkrin

1

Вы находитесь в бесконечном цикле. (e.getSource() == cmdNew) никогда не будет истинным, поэтому я никогда не буду увеличиваться, и вы просто зацикливаетесь навсегда.

+0

Но с кодом, который у меня есть, не было бы так, если вы нажмете кнопку, назначенную cmdNew, она будет увеличивать i на единицу? – Kalkrin

+0

Казалось бы, нет, не так ли? Вы не показываете определение 'e' или' cmdNew', поэтому будет сложно определить, правильно оно это или нет, но я уверен, что это никогда не будет истинным, или ваш цикл завершится. – ansible

Смежные вопросы