我是使用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方法中并执行。我希望这可以帮助您解决问题。

10-04 23:30
查看更多