Java:在排序之前存储数组

时间:2014-04-26 05:12:47

标签: java arrays

我正试图让我的程序的这个开始部分按照我想要的方式工作,然后再继续前进,这让我发疯了。为了获得书名,作者,页数的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;同样。不确定如何解决这个问题。

3 个答案:

答案 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个条目。