【问题标题】:25 Random Numbers Generator of Even and Odd25个偶数和奇数的随机数发生器
【发布时间】:2017-04-18 13:45:07
【问题描述】:

我需要生成 25 个随机数,然后根据它们是奇数还是偶数,将它们分成两个数组。这是我的预期输出:

偶数:40 10 70 58 20 18 74 44 14 54 50 42
奇数:21 75 29 69 7 41 33 35 21 13 93 73 33

这是我目前所拥有的:

public static void main(String[] args) {   
Scanner input = new Scanner(System.in).useDelimiter("\n");
int[] randomNumbers = new int[25];
int[] evenNumbers = new int[25];
int[] oddNumbers = new int[25];
int k = 0, l = 0;

for (int i= 0; i< randomNumbers.length; i++) {
    randomNumbers[i] = (int) (Math.random() * 99);
}
for (int i = 0; i < 25; i++) {
    if (randomNumbers[i] % 2 == 0) {
        evenNumbers[k] = randomNumbers[i];
        k++;
    } else {
        oddNumbers[l] = randomNumbers[i];
        l++;
    }
}System.out.print("Even: ");
for (int i = 0; i< evenNumbers.length; i++) {
    System.out.print(evenNumbers[i] + " ");

}System.out.println("");
System.out.print("Odd: ");
for (int i= 0; i < oddNumbers.length; i++) {
    System.out.print(oddNumbers[i] + " ");
    }
  }
}

这是我的实际输出:

偶数:40 10 70 58 20 18 74 44 14 54 50 42 0 0 0 0 0 0 0 0 0 0 0 0 0
奇数:21 75 29 69 7 41 33 35 21 13 93 73 33 0 0 0 0 0 0 0 0 0 0 0 0

我想知道如何去除每个输出末尾的零。

【问题讨论】:

标签: java random


【解决方案1】:

int[] evenNumbers = new int[25]; 将创建一个由 25 个 int 组成的数组,初始化为 0。

然后循环将打印 所有 25 个这些整数,即使它们没有被替换:

for (int i = 0; i< evenNumbers.length; i++) {
  System.out.print(evenNumbers[i] + " ");
}

要修复从 0 到 k-1 的循环(例如 i &lt; k)或使用 List&lt;Integer&gt; 而不是 int 数组。

这同样适用于奇数,您只需使用 i &lt; l 代替。

【讨论】:

    【解决方案2】:

    初始化一个int数组时,填充0s作为初始值。您有 2 个选项。

    选项 1:

    导入 java.util.ArrayList;

    并使用 ArrayList 来存储后面的偶数和奇数。这不是最佳解决方案,因为您正在寻找少量数字。

    选项 2:

    停止调用 System.out.println();达到 0 时的功能。 0 被认为是偶数,因此您需要开始打印奇数,计算有多少并停在 0 处,然后开始打印剩余的偶数。代码:

    int count = 0;
    System.out.print("Odd: ");
    for (int i= 0; i < oddNumbers.length; i++) {
        if (oddNumbers[i]!=0) {
            System.out.print(oddNumbers[i] + " ");
            count++;
        }
    }
    System.out.print(System.lineSeparator()+"Even: ");//Uses the system-specific new-line character which is extracted with System.lineSeparator().
    for (int i = 0; i< evenNumbers.length; i++) {
        count++;
        if (count==26) {
            break;
        }
        System.out.print(evenNumbers[i] + " ");
    }
    

    【讨论】:

      【解决方案3】:

      打印零是因为您创建了一个包含 25 个ints 的数组。这 25 个 ints 中的每一个都被初始化为零(java 中原始 int 的默认值)。

      要实现您的目标,您有两种选择:

      1. 您可以使用ArrayList&lt;Integer&gt; 代替数组。 ArrayList 只是一个内部调整大小的数组。或者
      2. 您必须包括两个计数器来跟踪您在奇数/偶数数组中插入了多少元素。

      【讨论】:

        【解决方案4】:
        package test2;
        
        import java.util.Scanner;
        
        public class StackO1 {
        
            public static void main(String[] args) {   
                Scanner input = new Scanner(System.in).useDelimiter("\n");
                int[] randomNumbers = new int[25];
                int[] evenNumbers = new int[25];
                int[] oddNumbers = new int[25];
                int k = 0, l = 0;
        
                for (int i= 0; i< randomNumbers.length; i++) {
                    randomNumbers[i] = (int) (Math.random() * 99);
                }
                for (int i = 0; i < 25; i++) {
                    if (randomNumbers[i] % 2 == 0) {
                        evenNumbers[k] = randomNumbers[i];
                        k++;
                    } else {
                        oddNumbers[l] = randomNumbers[i];
                        l++;
                    }
                }System.out.print("Even: ");
                for (int i = 0; i< k; i++) {
                    System.out.print(evenNumbers[i] + " ");
        
                }System.out.println("");
                System.out.print("Odd: ");
                for (int i= 0; i < l; i++) {
                    System.out.print(oddNumbers[i] + " ");
                    }
                  }
                }
        

        【讨论】:

          【解决方案5】:

          我建议您采用不同的方法 :)
          1)您不需要两个 for 循环 - 一个用于生成随机数,第二个用于将它们分开为奇数和偶数。您可以使用一个 for 循环来做到这一点。
          2) 使用List&lt;Integer&gt; 代替数组。仅当任务要求时才使用数组。
          3) 也许,你不需要randomNumbers 变量。
          4) 如果您使用 0 作为特殊值,请小心。可以从Math.random()Math.random() and zero value.获取零值

          这就是代码

          public static void main(String[] args) {
              int NUM_OF_NUMS = 25;
          
              List<Integer> randomNumbers = new ArrayList<>();
              List<Integer> evenNumbers = new ArrayList<>();
              List<Integer> oddNumbers = new ArrayList<>();
          
              for (int i = 0; i < NUM_OF_NUMS; i++) {
                  int randomNumber = (int) (Math.random() * 99);
                  randomNumbers.add(randomNumber);
          
                  if (randomNumber % 2 == 0) {
                      evenNumbers.add(randomNumber);
                  } else {
                      oddNumbers.add(randomNumber);
                  }
              }
          
              printArrays(evenNumbers, oddNumbers);
          }
          
          private static void printArrays(List<Integer> evenNumbers, List<Integer> oddNumbers) {
              System.out.print("Even: ");
              for (int num : evenNumbers) {
                  System.out.print(num + " ");
              }
              System.out.println("");
          
              System.out.print("Odd : ");
              for (int num : oddNumbers) {
                  System.out.print(num + " ");
              }
          }
          

          【讨论】:

            猜你喜欢
            • 2015-06-18
            • 1970-01-01
            • 1970-01-01
            • 2020-02-28
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2019-12-15
            相关资源
            最近更新 更多