我一直试图在几个小时内完成这项工作。由于用户输入,我的程序应该生成随机数。然后程序将数字分成两个新的偶数和奇数数组。我已经解决了"生成的随机数"部分但现在我需要将偶数和奇数转换成两个新数组。
这就是输出的样子:
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或其他!
答案 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[])
的数组