首页 > 解决方案 > 如何按照说明显示两个数组

问题描述

我正在为我的 Java 课程做这个作业,所以指令是:

“编写一个程序,在 1 到 100 范围内生成 100 个随机整数,并将它们存储在一个数组中。然后,该程序应调用一个类方法,该方法将偶数为 multiplesof4intoanarray 的数字提取并返回该数组。然后程序应调用另一种方法将不是 4 的偶数倍数的数字提取到一个单独的数组中并返回该数组。然后应该显示两个数组。

public class Assignment8
{
  public static void main (String [] args)
  {
    int [] numbers = new int [100];
    for (int i = 1; i < numbers.length; i++) {
      numbers[i] = (int)(Math.random()*((100)+1))+1; 
    }
      int EMO4N [] = evenMultiplesOf4(numbers);
      System.out.println("The even multiples of four are: ");
      for (int m = 8; m < EMO4N.length; m++) {
        System.out.println(EMO4N [m] + "  " ); 
      }
      int NEMO4N [] = nonEvenMultiplesOf4(numbers);
      System.out.println("The numbers that are not even multiples of four are: ");
      for (int k = 1; k < NEMO4N.length; k++) {
        System.out.println(NEMO4N [k] + "  ");
      }
  }
  public static int [] evenMultiplesOf4(int [] numbers) 
  {
    int EMO4 = 8;
    for (int x : numbers) {
      if (x % 4 == 0 & (x / 4) % 2 == 0) {
        EMO4++;
      }
    }
    int [] EMO4N = new int [EMO4];
    int y = 8;
    for (int m : numbers) {
      if(y % 4 == 0 & (y / 4) % 2 == 0) {
        EMO4N[y] = m;
        y++;
      }
    }
    return EMO4N;
  }

  public static int [] nonEvenMultiplesOf4( int [] numbers)
  {
    int NEMO4 = 1;
    for (int j : numbers) {
      if (j % 4 != 0 || (j / 4) % 2 != 0) {
        NEMO4++;
      }
    }
    int [] NEMO4N = new int [NEMO4];
    int k = 1;
    for (int n : numbers) {
      if(k % 4 != 0 || (k / 4) % 2 != 0) {
        NEMO4N[k] = n;
        k++;
      }
    }
    return NEMO4N;
  }
}

显示的结果始终是 0 和其他一些随机数的组合。

标签: java

解决方案


你有几个小的逻辑错误。

  1. 您从 开始my结束8,这没有意义,因为它们旨在跟踪您将插入的索引。

  2. 您使用该表达式if (x % 4 == 0 & (x / 4) % 2 == 0)来确定该数字是否可以被四整除,但if(x % 4 == 0)是否足够。

  3. 在你的循环中:

for (int n : numbers) {
    if(k % 4 != 0) {
       NEMO4N[k] = n;
       k++;
    }
}

您正在检查是否k可以被 4 整除,而您应该检查n. 将其更改为:

for (int n : numbers) {
    if(n % 4 != 0) {
      NEMO4N[k] = n;
      k++;
    }
}

我不会提供工作代码,因为这似乎是一项家庭作业。


推荐阅读