0
public class AssignmentChapter8
{
    public static void main(String[] args)
    {
        int oddNumbers[] = new int[100];
        int evenNumbers[] = new int[100]; 
        int counter = 0;
        int x = 0;
        int y = 0;
        int placeholder;

        while(counter < 100)
        {
            placeholder = (int)(Math.random() * 25);

            if(placeholder % 2 > 0)
            {
                oddNumbers[x] = placeholder;
                x++;
            }
            else
            {
                evenNumbers[y] = placeholder;
                y++;
            }
        }   

        System.out.println("The odd numbers are:");

        for(int k = 0; k < 100; k++)
            System.out.print("\t" + oddNumbers[k]);

        System.out.println("The even numbers are:");

        for(int l = 0; l < 100; l++)
            System.out.print("\t" + evenNumbers[l]);
    }
}

我最近开始使用java并试图编写一个程序来生成100个随机整数,然后将它们分类为偶数和奇数并通过数组显示它们。我可以编译上面的代码,但无法执行。我不断收到越界异常。任何帮助,将不胜感激。

4

2 回答 2

0

你没有增加你的计数器,所以基本上你有一个无限循环。最终,x 或 y 达到 100,并且您遇到了数组大小(奇数或偶数)的超出范围异常。

您需要counter++;在 while 循环中的某处添加一行。

于 2013-07-08T19:43:17.840 回答
0

您应该做的一个小调整是(除了修复无限循环):

public class AssignmentChapter8
{
    public static void main(String[] args)
    {
        int oddNumbers[] = new int[100];
        int evenNumbers[] = new int[100]; 
        int counter = 0;
        int x = 0;
        int y = 0;
        int placeholder;

        while(counter < 100)
        {
            placeholder = (int)(Math.random() * 25);

            if(placeholder % 2 > 0)
            {
                oddNumbers[x] = placeholder;
                x++;
            }
            else
            {
                evenNumbers[y] = placeholder;
                y++;
            }
            // Change 1:
            counter++;
        }   

        System.out.println("The odd numbers are:");
        // change 2:
        for(int k = 0; k < x; k++)
            System.out.print("\t" + oddNumbers[k]);

        System.out.println("The even numbers are:");
        // change 2:
        for(int l = 0; l < y; l++)
            System.out.print("\t" + evenNumbers[l]);
    }
}

第一个变化:你没有增加你的计数器,这会产生一个无限循环(将 x 或 y 推到 100 以上导致你的数组溢出)。

第二个变化:虽然你的数组的其余部分默认初始化为零,但如果你的 for 循环在偶数/奇数列表的末尾停止可能会更好,x 保存奇数的数量,y 保存数字偶数,因此您可以在它们而不是 100 处终止 for 循环(这可能会导致一长串零,无论您的列表的其余部分有多长)。

于 2013-07-08T19:51:12.400 回答