所以我是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");
}
}
}
}
答案 0 :(得分:1)
好的,让我们从头开始
你读了一堆输入并将它存储在一个数组中,到目前为止一直很好。
然后,您尝试通过执行formula
仅向函数formula(even[b])
发送一个值。但是,正如@Sanjeev所指出的那样,此时你的b = 10
因为for
循环而前,因此会给你array out of bounds
。
然后在formula
中,你只期待一个int
,但是你接受int
(a
在你的情况下)并在{{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。因此例外。