Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 阵列和输出_Java_Arrays - Fatal编程技术网

Java 阵列和输出

Java 阵列和输出,java,arrays,Java,Arrays,我是java编程新手,所以请原谅我愚蠢的错误。我的问题是,我的代码没有给出我想要的输出,即显示数组的所有偶数值,然后显示数组的所有不均匀值。这是我的代码: //main class public class Even_number_array { public static void main(String[] args) { array_class obj = new array_class(); obj.set_numbers(); } } //anothe

我是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);
      }

    }

  }
}
我有几个问题,为什么我的数组中的数字8不是用10和20打印,而6像8一样单独打印?还有,有没有一种方法可以让我使用Scanner类为数组获取用户输入,我该如何做呢


欢迎任何帮助!提前感谢:)

如果我理解你的问题-以及你想要什么。最简单的解决方案(我明白)是循环两次

// Print the even numbers first.
for (int i=0; i < arr.length;i++){
  if (arr[i] % 2 == 0) { // % 2 == 0 is even
    System.out.printf("arr[%d] = %d%n (even)", i, arr[i]);
  }
}
// Then the odd numbers.
for (int i=0; i < arr.length;i++){
  if (arr[i] % 2 != 0) { // % 2 != 0 is odd (or "uneven")
    System.out.printf("arr[%d] = %d%n (odd)", i, arr[i]);
  }
}
//先打印偶数。
对于(int i=0;i
For loop应该是 这是因为你的2个循环系统(对于+do-while)。例如,在打印i=1的“20”时,执行i++运算,得到i=2和arr[i]=7。此时,您的while arr[i]%2==0,当然还有7%2!=0所以退出do while循环,返回for,执行另一个i++操作,给出i=3,然后再次转到if:在本例中,您从未打印过值arr[2]=7,然后再次打印“这些偶数在数组中找到:”值arr[3]=8

我希望解释清楚。没有白板,很难解释算法;)


PS:+1代表第三方"For loop应该是<不是为什么你会说循环一次并存储在两个不同的列表中不是更好吗?一个是奇数,一个是偶数?@Aeshang如何将值复制到两个数组中,将一个数组的所有偶数值显示在彼此下面,然后将数组的所有不均匀值显示在彼此下面?你能详细说明一下吗这会有什么不同?这就是你想要的。埃利奥特走对了。非常感谢!这肯定有帮助:)没问题。可以使用扫描仪填充阵列。如果您仍然需要帮助,请查阅scanner类。我可能会为您发布一些代码。我知道如何将scanner类用于普通变量,但将scanner类用于数组确实令人困惑,如果您能帮助我解决此问题,将不胜感激!你为什么把我的答案改成正确答案?谢谢!关于解释部分你是对的,但我有点明白你的意思:)谢谢你的帮助@Julien
// Print the even numbers first.
for (int i=0; i < arr.length;i++){
  if (arr[i] % 2 == 0) { // % 2 == 0 is even
    System.out.printf("arr[%d] = %d%n (even)", i, arr[i]);
  }
}
// Then the odd numbers.
for (int i=0; i < arr.length;i++){
  if (arr[i] % 2 != 0) { // % 2 != 0 is odd (or "uneven")
    System.out.printf("arr[%d] = %d%n (odd)", i, arr[i]);
  }
}
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]);
        }