我需要生成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
我想知道如何在每个输出的末尾摆脱零。
答案 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
的默认值)。
为了实现目标,您有两种选择:
ArrayList<Integer>
代替数组。 ArrayList
内部只是一个调整大小数组。或者答案 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 + " ");
}
}