尝试编写一个程序,要求用户输入10个整数。该程序将偶数放入一个名为evenList的数组中,将奇数放入一个名为oddList的数组中,将负数放入一个名为negativeList的数组中。在输入所有整数后,该程序将显示这三个数组的内容。
- 这是我的密码:**
import java.util.Scanner;
public class Main
{
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int countNeg = 0;
int countOdd = 0;
int countEven = 0;
int[] list = new int[10];
System.out.println("Please enter 10 integers:");
for(int i = 0; i < list.length; i++)
{
list[i] = scan.nextInt();
if(list[i] < 0)
{
countNeg++;
}
if(list[i] % 2 == 0 && list[i] > 0)
{
countEven++;
}
if(list[i] % 2 == 1 && list[i] > 0)
{
countOdd++;
}
}
int[] oddList = new int[countOdd];
int[] evenList = new int[countEven];
int[] negativeList = new int[countNeg];
for(int i = 0; i < list.length; i++)
{
if(list[i] < 0)
{
for(int j = 0; j < countNeg; j++)
{
negativeList[j] = list[i];
}
}
}
for(int i = 0; i < list.length; i++)
{
if(list[i] % 2 == 0 && list[i] > 0)
{
for(int j = 0; j < countEven; j++)
{
evenList[j] = list[i];
}
}
}
for(int i = 0; i < list.length; i++)
{
if(list[i] % 2 == 1 && list[i] > 0)
{
for(int j = 0; j < countOdd; j++)
{
oddList[j] = list[i];
}
}
}
for (int i : negativeList)
{
System.out.print(i + " ");
}
System.out.println();
for (int i : evenList)
{
System.out.print(i + " ");
}
System.out.println();
for (int i : oddList)
{
System.out.print(i + " ");
}
}
}
程序打印数组时,数组中的值数量正确,但数字错误。它只打印最后一个要输入的负数、偶数或奇数。exinput is 1,2,3,4,5,6,-1,-2,-3,-4。对于negativeList,它打印-4 -4 -4 -4。我猜在数组创建后循环中有问题。请帮助!!
2条答案
按热度按时间um6iljoc1#
你可以用
ArrayList
代替数组来简化代码。例如:enxuqcxy2#
你提供的代码有一些问题。
首先,在初始化negativeList、evenList和oddList数组的for循环中,你在每次迭代时都会覆盖这些值,这意味着最终的数组只包含最后一个赋值给它们的值。要解决这个问题,你可以使用一个计数器变量来跟踪每个数组中要填充的下一个索引,如下所示:
第二,您没有检查输入值是否为整数。如果用户输入非整数值,程序将抛出异常。您可以添加一个检查以确保输入为整数,如下所示: