У меня возникли проблемы с очень простой, начинающей Java-программой. У меня есть функция, которая должна возвращать значение, зависящее от ответа пользователя на сообщение JOptionPane YES_NO_OPTION. Программа работает очень хорошо, пока вам не представится возможность начать снова или отступить. Независимо от того, какой вариант вы выберете, да или нет, он вернет вас, чтобы сделать новый цикл. Я знаю, что один способ исправить это будет просто полагаться на кнопку отмены, но я хочу понять, почему этот код не возвращает значения, которые я ожидаю, так что было бы очень благодарно за вашу помощь.JOptionPane YES_NO_OPTION
import javax.swing.JOptionPane;
public class HelloMK2 {
public static void main(String[] args) {
for (int i = 0; i < 3000; i++) {
double Int1 = optiontakeshape();
double Int2 = optiontakediam();
if (Int1 == 1.0) {
Shape s1 = new Circle(Int2);
infoBox(s1.area2d());
} else {
Shape s1 = new Sphere(Int2);
infoBox(s1.volume());
}
int yesno = repeat();
if (yesno == 1) {
System.out.println(yesno);
break;
}
}
}
public static int repeat() {
int j;
int g = JOptionPane.YES_NO_OPTION;
JOptionPane.showConfirmDialog(null, "Would you like to begin again?",
"Repeat?", g);
if (g == JOptionPane.NO_OPTION) {
j = 1;
System.exit(0);
} else if (g == JOptionPane.YES_OPTION) {
j = 2;
} else {
j = 3;
System.exit(0);
}
System.out.println(j);
return j;
}
//...
}
EDIT: Спасибо за много быстрых ответов. Я фактически не тестировал значение результата «Да/Нет». Код, который я в настоящее время осуществляется в:
public static int repeat()
{
int j;
if (JOptionPane.showConfirmDialog(null, "Would you like to begin again?", "Repeat?", JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION){
j = 2;
} else {
j = 1;
//System.exit(0); escaped so I could test the break point was working properly
}
System.out.println(j);
return j;
}
Почему вы проверить, что g после того, как вы установили его в JOptionPane.YES_NO_OPTION; –