ArrayIndexOutOfBounds错误彩票程序/不可执行的源代码错误



我是Java新手,在创建一个为彩票打印6个随机数的程序时,我收到了一个ArrayIndexOutOfBounds错误,我不知道如何修复。这是我的东西。

import java.util.Random;
public class DebugMeOne {
    static int[] lottoNumbers = new int[6];
    public static void main(String[] args)
    {
        generateNumbers();
        printNumbers();
    }
    private static void generateNumbers()
    {
        int ticketNumber;
        Random generateRandomNumber = new Random();
        for (int count = 0; count < lottoNumbers.length + 1; count++)
        {
            ticketNumber = 1 + generateRandomNumber.nextInt(59);
            lottoNumbers[count] = ticketNumber;
       }
    }
    private static void printNumbers()
    {
       for (int count = 0; count < lottoNumbers.length + 1; count++)
        {
           if (count < 5)
               if (count == 4)
                   System.out.print(lottoNumbers[count]);
               else
                    System.out.print(lottoNumbers[count] + ", ");
           else
               System.out.println("nPower Ball: "
                                    + lottoNumbers[count]);
        }
    }
}

我还有另一个程序,我必须为同样的事情创建,只是有点不同的代码。我也收到了一个错误:

public class Lottery {
    static ArrayList<Integer> lottoNumbers = new ArrayList<Integer>();
    static int MAX_NUMBERS = 6;
    public static void main(String[] args)
    {
        generateNumbers();
        printNumbers();
    }
    private static void generateNumbers()
    {
        int ticketNumber;
        Random generateRandomNumber = new Random();
        for (int count = 0; count < MAX_NUMBERS; count++)
        {
            ticketNumber = 1 + generateRandomNumber.nextInt(59);
            lottoNumbers.add(new Integer(ticketNumber));
        }
    }
    private static void printNumbers()
    {
        int count = 0;
        for( Integer number : numbers )  // enhanced for loop
        {
           if (count < 5)
               if (count == 4)
                   System.out.print(number);
               else
                    System.out.print(number + ", ");
           else
           {
               System.out.println("nPower Ball: " + number);
               count++;
           }
        }
    }
}

在这个我得到这个错误:

Exception in thread "main" java.lang.RuntimeException: Uncompilable source code
cannot find symbol
  symbol:   variable numbers
  location: class debugmetwo.DebugMeTwo
    at debugmetwo.DebugMeTwo.printNumbers(DebugMeTwo.java:52)
    at debugmetwo.DebugMeTwo.main(DebugMeTwo.java:34)
Java Result: 1

您的for循环计数超过了数组的length。两个for循环都应该像一样运行

for (int count = 0; count < lottoNumbers.length; count++)

此外,您不应该对count比较中使用的length值(5,4)进行硬编码以打印逗号。使用length属性作为

for (int count = 0; count < lottoNumbers.length; count++)
 {
   if (count < lottoNumbers.length - 1) {
       System.out.print(lottoNumbers[count]);
       System.out.print(count == lottoNumbers.length - 2 ? "" : ", ");
   } else {
       System.out.println("nPower Ball: "
                            + lottoNumbers[count]);
   }
 }

循环的条件应该是:

for (int count = 0; count < lottoNumbers.length; count++)

lottoNumbers的有效索引是从0lottoNumbers.length - 1

相关内容

最新更新