数组超出范围异常错误java

时间:2016-12-20 22:27:16

标签: java indexoutofboundsexception

所以我是java的初学者。我正在尝试创建一个程序,告诉我数组中的偶数。但是,我不断得到数组超出界限错误:第29行10(我在哪里"公式[偶[b]]。请帮助吗?

public class arrayone
{
    public static void main(String args [])
    {
        /* 
    tell me the number of even ints in the given array. Note: the % "mod" operator computes the remainder, e.g. 5 % 2 is 1.
    */

    //declare an array
    int[] even= new int[10];

    //int b is for the forloop so that every number can be added
    int b;

    //

    //initialize the scanner, and enter prompt
    Scanner input= new Scanner(System.in);

    //enter prompt
    System.out.printf("Enter 10 random numbers\n");

    //make a forloop so every number they put in will be added to the array
    for(b=0;b<10;b++)
    {
    even[b]=input.nextInt();
    }

//then run the formula
formula(even[b]);
    }

    public static void formula(int a)
    {


        //use an if statement to see if the numbers in the array are odd or even.
        for(a=0;a<=10;a++)
        {
        if((a%2)==0)
        {
            System.out.printf("This number is even\n");
        }
        else
        {
            System.out.printf("This number isn't even\n");

        }
        }
    }
}

2 个答案:

答案 0 :(得分:1)

好的,让我们从头开始

你读了一堆输入并将它存储在一个数组中,到目前为止一直很好。

然后,您尝试通过执行formula仅向函数formula(even[b])发送一个值。但是,正如@Sanjeev所指出的那样,此时你的b = 10因为for循环而前,因此会给你array out of bounds

然后在formula中,你只期待一个int,但是你接受inta在你的情况下)并在{{1}中重新分配btw检查0到10(含)之间的数字是偶数的循环。不是我想要的。

你真正想做的是:

for

for(int i = 0; i < 10; i++) {
    formula(even[i]);
} 

public static void formula(int a)
{
    if((a%2)==0)
    {
        System.out.printf("This number is even\n");
    }
    else
    {
        System.out.printf("This number isn't even\n");
    }
}

答案 1 :(得分:0)

   for(b=0;b<10;b++)
    {
       even[b]=input.nextInt();
    }

退出b的for循环值后,10将超过数组even的容量。数组索引为0-9。因此例外。