Arrays 使用数组的计数器中的ArryIndexOutOfBoundsException 公共类分配第8章 { 公共静态void main(字符串[]args) { 整数奇数[]=新整数[100]; 整数整数[]=新整数[100]; int计数器=0; int x=0; int y=0; 整型占位符; 同时(计数器0) { oddNumbers[x]=占位符; x++; } 其他的 { 偶数[y]=占位符; y++; } } System.out.println(“奇数为:”); 对于(int k=0;k

Arrays 使用数组的计数器中的ArryIndexOutOfBoundsException 公共类分配第8章 { 公共静态void main(字符串[]args) { 整数奇数[]=新整数[100]; 整数整数[]=新整数[100]; int计数器=0; int x=0; int y=0; 整型占位符; 同时(计数器0) { oddNumbers[x]=占位符; x++; } 其他的 { 偶数[y]=占位符; y++; } } System.out.println(“奇数为:”); 对于(int k=0;k,arrays,random,counter,indexoutofboundsexception,Arrays,Random,Counter,Indexoutofboundsexception,我最近启动了java,正在尝试编写一个程序来生成100个随机整数,然后将它们排序为偶数和赔率,并通过数组显示它们。我可以编译上面的代码,但无法执行。我不断收到越界异常。任何帮助都将不胜感激。您没有增加计数器,因此本质上是一个无限循环。最终,x或y达到100,数组的大小(oddNumbers或evenNumbers)会出现越界异常 您需要添加一个计数器++行在while循环中的某个地方。除了修复无限循环之外,您还应该做一些小调整: 公共类分配第8章 { 公共静态void main(字符串[]arg

我最近启动了java,正在尝试编写一个程序来生成100个随机整数,然后将它们排序为偶数和赔率,并通过数组显示它们。我可以编译上面的代码,但无法执行。我不断收到越界异常。任何帮助都将不胜感激。

您没有增加计数器,因此本质上是一个无限循环。最终,x或y达到100,数组的大小(oddNumbers或evenNumbers)会出现越界异常


您需要添加一个
计数器++行在while循环中的某个地方。

除了修复无限循环之外,您还应该做一些小调整:

公共类分配第8章
{
公共静态void main(字符串[]args)
{
整数奇数[]=新整数[100];
整数整数[]=新整数[100];
int计数器=0;
int x=0;
int y=0;
整型占位符;
同时(计数器<100)
{
占位符=(int)(Math.random()*25);
如果(占位符%2>0)
{
oddNumbers[x]=占位符;
x++;
}
其他的
{
偶数[y]=占位符;
y++;
}
//更改1:
计数器++;
}   
System.out.println(“奇数为:”);
//改变2:
对于(int k=0;k
第一个变化:你没有增加你的计数器,这产生了一个无限循环(将x或y推到100以上导致你的数组溢出)

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

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]);
    }
}
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]);
    }
}