這是一個家庭作業問題..我正在使用JOptionPane
來計算投票的程序,直到輸入Q或q並且投票計數停止。然後它啓動一個showConfirmDialog
,詢問用戶他們是否真的想要退出。該程序的主要任務已經完成,但其中一條指令指出,在showInputDialog中,不是Y,y,N,n,Q或q的任何條目都將被忽略。java.lang.StringIndexOutOfBoundsException和showInputDialog
我遇到了麻煩,因爲由於某種原因,任何時候點擊對話框上的任何按鈕,程序都會關閉。程序的其餘部分工作正常,但是當我運行它時,它會給出編譯錯誤通知,並最終出現此問題。
這是我的代碼。任何想法這裏發生了什麼?感謝您的幫助。
編輯 - 就這麼你知道,System.out.println("HI");
線就在那裏,所以我可以確定問題是否與繼續聲明的整個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);
}
}
}
家庭作業標籤,如果它是作業問題 –
謝謝,我只是做了。 –
你在哪裏設置選項,而不是在開始? –