Java - 无法让它工作

时间:2015-11-22 16:20:19

标签: java arrays random numbers java.util.scanner

我一直试图在几个小时内完成这项工作。由于用户输入,我的程序应该生成随机数。然后程序将数字分成两个新的偶数和奇数数组。我已经解决了"生成的随机数"部分但现在我需要将偶数和奇数转换成两个新数组。

这就是输出的样子:

How many random numbers between 0 - 999 do you want? **12**

Here are the random numbers:
145 538 56 241 954 194 681 42 876 323 2 87

These 7 numbers are even:
538 56 954 194 42 876 2

These 5 numbers are odd:
145 241 681 323 87

这是我目前的代码:

import java.util.Scanner;

public class SlumpadeTal {

public static void main(String[] args) {

    Scanner input = new Scanner(System.in);
    System.out.println("Hur många slumptal i intervallet 0 - 999 önskas?");
    int antal = input.nextInt();

    System.out.println("Här är de slumpade talen:");

    int[] arrayen = new int[antal];
    for (int i = 0; i < arrayen.length; i++) {
        arrayen[i] = (int) (Math.random() * 999 + 1);

        System.out.print(arrayen[i] + " ");
        if ((arrayen[i] % 2) == 0) {

            }
        }
    }
}

请注意,我无法使用任何课程。如Arraylist,Vector或其他!

3 个答案:

答案 0 :(得分:1)

一个简单的解决方案是计算偶数和奇数的数量, 创建那些大小的数组,并再次遍历原始数组,将每个数字放在其中。

编辑:这样的事情:

int evenCounter = 0;
int oddCounter = 0;
Scanner input = new Scanner(System.in);
System.out.println("Hur många slumptal i intervallet 0 - 999 önskas?");
int antal = input.nextInt();

System.out.println("Här är de slumpade talen:");

int[] arrayen = new int[antal];
for (int i = 0; i < arrayen.length; i++) {
    arrayen[i] = (int) (Math.random() * 999 + 1);

    System.out.print(arrayen[i] + " ");
    if ((arrayen[i] % 2) == 0) {
         evenCounter++;
        }
    else
         oddCounter++;
    }
}
int[] evenArray = new int[evenCounter];
int[] oddArray = new int[oddCounter];
evenCounter = 0;
oddCounter = 0;
for (int i =0; i < arrayen.length; i++){
    if ((arrayen[i] % 2) == 0) {
         evenArray[evenCounter] = arrayen[i];
         evenCounter++;
        }
    else{
         oddArray[oddCounter] = arrayen[i];
         oddCounter++;
    }
}

答案 1 :(得分:0)

我的解决方案是在生成数字后将数字除以奇数或偶数。使用arraylist将比数组更好,因为它的容量将自动增长并且适合您的情况,因为您不知道每次将生成多少偶数或奇数。

答案 2 :(得分:0)

您的代码(if ((arrayen[i] % 2) == 0))中的if语句是正确的。

我建议做的不是创建新数组,而是创建具有动态长度的集合类型,例如ArrayList。这样你就不必担心先计算尺寸,因此不必重复两次。

如果您因任何原因确实需要数组,可以随时将ArrayList转换为ArrayList#toArray(T[])

的数组