我是使用Java编程的新手,所以请宽容我的愚蠢错误。我的问题是我的代码没有提供我想要的输出,而是要在彼此下面显示一个数组的所有偶数,然后在彼此下面显示该数组的所有不平坦值。这是我的代码:
//main class
public class Even_number_array
{
public static void main(String[] args)
{
array_class obj = new array_class();
obj.set_numbers();
}
}
//another class
public class array_class
{
private int arr[] =
{
10, 20, 7, 8, 3, 6, 11, 9, 7, 45
};
public void set_numbers()
{
for (int i = 0; i <= arr.length; i++)
{
if (arr[i] % 2 == 0)
{
System.out.println("These even numbers were found in the array:");
do
{
System.out.println(arr[i]);
i++;
}
while (arr[i] % 2 == 0);
}
else if (arr[i] % 2 != 0)
{
System.out.println("uneven numbers found in array:");
do
{
System.out.println(arr[i]);
i++;
}
while (arr[i] % 2 != 0);
}
}
}
}
这是我的输出(使用Netbeans IDE显示我所包含的错误,因为我不太了解它的含义,所以包含了该错误):
These even numbers were found in the array:
10
20
These even numbers were found in the array:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 10
8
These even numbers were found in the array:
6
uneven numbers found in array:
9
7
45
at even_number_array.array_class.set_numbers(array_class.java:35)
at even_number_array.Even_number_array.main(Even_number_array.java:12)
Java Result: 1
我有几个问题,为什么数组中的数字8不打印10和20,而6却像8那样分别打印?而且,有没有一种方法可以使用阵列的Scanner类来获取用户输入,我将如何进行呢?
任何帮助都将受到欢迎!提前致谢 :)
最佳答案
For循环应
System.out.println("Even Numbers");
for (int i=0; i < arr.length;i++){
if((arr[i] % 2) == 0)
{
System.out.println(arr[i]);
}
}
System.out.println("Odd Numbers");
for (int i=0; i < arr.length;i++){
if((arr[i] % 2) != 0)
{
System.out.println(arr[i]);
}
}
ArrayList<Integer> array = new ArrayList<Integer>();
int[] intArray;
Scanner scanner = new Scanner(System.in);
int a = 0;
while(a != -1)
{
System.out.println("Please enter an integer -1 to quit: ");
a = scanner.nextInt();
if(a != -1)
{
array.add(a);
}
}
intArray = new int[array.size()];
for(int i = 0; i < array.size(); i++)
{
intArray[i] = array.get(i);
}
for(int b = 0; b < intArray.length; b++)
{
System.out.println("Integer" + b + ": " + intArray[b]);
}
将此代码放入您的main方法中并执行。我希望这可以帮助您解决问题。