我正试图让我的程序的这个开始部分按照我想要的方式工作,然后再继续前进,这让我发疯了。为了获得书名,作者,页数的5个输入,我收到6个书名,5个作者,5个pg计数。我的最终结果是每个阵列都有5个输入,每个存储,所以我可以根据用户的要求组织它们。你看到我做错了吗?感谢。
String[] titleChoice = new String[5];
String title = "", titleString = "";
String[] authorChoice = new String[5];
String author = "", authorString = "";
String[] pageChoice = new String[5];
String page = "", pageString = "";
String currentTitle;
String formatEntry;
int x = 0;
int numEntered;
int highestTitle = titleChoice.length - 1;
int highestAuthor = authorChoice.length - 1;
int highestPage = pageChoice.length - 1;
final int MAX_ARRAY_SIZE = 5;
boolean notQuit = false;
Arrays.fill(titleChoice, "zzzzzzzzzzz");
Arrays.fill(authorChoice, "zzzzzzzzzzz");
Arrays.fill(pageChoice, "zzzzzzzzzzz");
do
{
currentTitle = JOptionPane.showInputDialog(null, "Enter the title of a book, or zzz to
quit:");
if(!currentTitle.equals("zzz"))
{
titleChoice[x] = currentTitle;
authorChoice[x] = JOptionPane.showInputDialog(null, "Please enter "
+ titleChoice[x] + "'s author's last name: ");
pageChoice[x] = JOptionPane.showInputDialog(null, "Please enter "
+ titleChoice[x] + "'s page count: ");
x = x + 1;
}
else
JOptionPane.showMessageDialog(null, "You have elected to quit the program.
Goodbye.);
}
while(!currentTitle.equals("zzz"));
接收titleChoice [x] = currentTitle的ArrayIndexOutOfBoundsException;同样。不确定如何解决这个问题。
答案 0 :(得分:1)
如果您希望程序停止要求超过5个标题,请为while添加更多条件:
while(!currentTitle.equals("zzz") && x < 5);
否则它会一直询问,直到你输入zzz。
答案 1 :(得分:1)
else
语句中的字符串不会关闭,但除此之外,除非用户输入&#34; zzz&#34;在第5个输入上,循环递增x并再次尝试不存在的索引。如上所述,while(!currentTitle.equals("zzz") && x < 5)
应该有效,因为它将索引限制为数组边界内的数字(0 - 4)。
答案 2 :(得分:0)
我猜你的第6本书名是&#34; zzz&#34;。他们正在输入第6个退出标题但是你没有运行生成作者和页面的代码部分,因此这两个部分仍然有5个条目。