【发布时间】:2012-01-12 20:05:46
【问题描述】:
这是一个家庭作业问题。我正在开发一个程序,该程序使用JOptionPane 来计算选票,直到输入 Q 或 q 并且计票停止。然后它会启动一个showConfirmDialog,询问用户是否真的想退出。程序的主要任务已经完成,但是其中一条指令指出,在 showInputDialog 上,任何不是 Y、y、N、n、Q 或 q 的条目都将被忽略。
我遇到了这个问题,因为出于某种原因,无论何时单击对话框上的任何按钮,程序都会关闭。该程序的其余部分工作正常,但是当我运行它时,它会给出一个编译错误通知,我最终遇到了这个问题。
这是我的代码。知道这里发生了什么吗?感谢您的任何帮助。
编辑 - 你知道,System.out.println("HI"); 行就在那里,所以我可以确定问题是否出在该位置的 continue 语句的整个 if 语句上。
编辑 #2 - 我使用您的建议(至少我如何解释它)在第一个程序(现在是 VoteCount2)下方发布了我对代码的编辑。
编辑 #3 - 我重新格式化并尝试听从您的建议。如果我做错了什么,我很抱歉,但我不知道该怎么办。
编辑 #4 - 这是我的工作方式..
Do { String voteString = "";
voteString = JOptionPane.showInputDialog(null, "Enter 'Y' to vote yes, 'N' to vote no, or 'Q' to quit voting", "Vote Now!", JOptionPane.OK_CANCEL_OPTION);
if (voteString == null || voteString.length() == 0) continue;
else if(voteString.toLowerCase().equals("y"))
yesVotes++;
else if (voteString.toLowerCase().equals("n"))
noVotes++;
旧程序的其余部分
package javaapplication16;
import javax.swing.JOptionPane;
public class VoteCount {
public static void main(String[] args) {
int yesVotes = 0, noVotes = 0, totalVotes = 0;
totalVotes = yesVotes + noVotes;
char vote;
int reply = 1;
int option = 0;
{
do {
String voteString = JOptionPane.showInputDialog(null, "Enter 'Y' to vote yes, 'N' to vote no, or 'Q' to quit voting", "Vote Now!", JOptionPane.OK_CANCEL_OPTION);
vote = voteString.charAt(0);
if (vote == 'Y' || vote == 'y')
yesVotes++;
if (vote == 'N' || vote == 'n')
noVotes++;
if (option == JOptionPane.OK_OPTION)
System.out.println("HI");
if (option == JOptionPane.CANCEL_OPTION)
continue;
if (option == JOptionPane.CLOSED_OPTION)
continue;
{
}
if (vote == 'Q' || vote == 'q')
{
reply = JOptionPane.showConfirmDialog(null, "Quit?", "Warning!", JOptionPane.YES_NO_OPTION);
if (reply == JOptionPane.YES_OPTION)
JOptionPane.showMessageDialog(null, "yes " + yesVotes + " no " + noVotes + " total " + totalVotes);
else if (reply != JOptionPane.YES_OPTION);
continue;
}
} while (reply != JOptionPane.YES_OPTION);
}
}
}
package javaapplication16;
import javax.swing.JOptionPane;
public class VoteCount {
public static void main(String[] args) {
int yesVotes = 0, noVotes = 0, totalVotes = 0;
totalVotes = yesVotes + noVotes;
char vote;
int reply = 1;
{
do {
String voteString = JOptionPane.showInputDialog(null, "Enter 'Y' to vote yes, 'N' to vote no, or 'Q' to quit voting", "Vote Now!", JOptionPane.OK_CANCEL_OPTION);
vote = voteString.charAt(0);
if (voteString == null || voteString.length() == 0)
vote = 'q';
if (voteString.toLowerCase().equals("y"))
yesVotes++;
if (voteString.toLowerCase().equals("n"))
noVotes++;
{
}
if (voteString.toLowerCase().equals("q"))
{
reply = JOptionPane.showConfirmDialog(null, "Quit?", "Warning!", JOptionPane.YES_NO_OPTION);
if (reply == JOptionPane.YES_OPTION)
JOptionPane.showMessageDialog(null, "yes " + yesVotes + " no " + noVotes + " total " + totalVotes);
else if (reply != JOptionPane.YES_OPTION);
continue;
}
} while (reply != JOptionPane.YES_OPTION);
}
}
}
【问题讨论】:
-
作业标签,如果是作业问题
-
除了开头之外,你在哪里设置选项?
-
你的意思是JOptionPane?在 while 循环的开头有一个 showINputDialog 框,在 while 循环的结尾有一个 showConfirmDialog 后跟一个 showMessageDialog。你指的是这个吗?
标签: java string while-loop joptionpane