25个随机数偶数和奇数发生器

时间:2017-04-18 13:45:08

标签: java random

我需要生成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

我想知道如何在每个输出的末尾摆脱零。

5 个答案:

答案 0 :(得分:3)

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

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

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

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

这同样适用于奇数,您只需使用i < l

答案 1 :(得分:2)

启动int数组时,将填充0作为初始值。你有2个选择。

选项1:

import 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] + " ");
}

答案 2 :(得分:1)

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

为了实现目标,您有两种选择:

  1. 您可以使用ArrayList<Integer>代替数组。 ArrayList内部只是一个调整大小数组。或者
  2. 您必须包含两个计数器,用于跟踪您在奇数/偶数数组中插入的元素数量。

答案 3 :(得分:1)

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] + " ");
            }
          }
        }

答案 4 :(得分:0)

我建议你采用不同的方法:) 1)你不需要两个for循环 - 一个用于生成随机数,第二个用于将它们分成奇数和偶数。您可以使用for循环执行此操作 2)使用List<Integer>代替数组。仅在任务重新使用数组时才使用数组 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 + " ");
    }
}