我有一个作业,我一整天都在做它,我完成了它,并且它有效,但不是按照我的老师想要的方式,我已经绞尽脑汁几个小时但没有任何运气
这是作业问题
“编写一个程序,输入五个,每个数字在 10 到 100 之间(含),当我读取每个数字时,仅当它不是已读取的重复数字时才显示它,提供“最坏情况”,其中所有数字五个数字不同,使用尽可能小的数组来解决这个问题。在用户输入每个新值后,显示输入的完整唯一值集。”
这是我写的代码
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int sid[] = new int[5];
int count = 0;
int x = 0;
int num = 0;
while (x < sid.length)
{
System.out.println("Enter number: ");
num = input.nextInt();
if ((num >= 10) && (num <= 100)) {
boolean digit = false;
x++;
for (int i = 0; i < sid.length; i++)
{ if (sid[i] == num)
digit = true;
}
if (!digit) {
sid[count] = num;
count++;
}
else
System.out.printf("the number was entered before \n");
}
else
System.out.println("number must be between 10 and 100");
for (int i =0; i < x; i++) {
System.out.print(sid[i] +" ");
}
System.out.println();
}
}
}
我的问题是在输出中,输出是这样的
{
Enter number:
11
11
Enter number:
21
11 21
Enter number:
34
11 21 34
Enter number:
11
the number was entered before
11 21 34 0
Enter number:
44
11 21 34 44 0
}
但是我的老师希望输出也像这样,末尾没有 0,并且不将数组 sid 的值从 sid[5] 更改为 sid[4]
{
Enter number:
11
11
Enter number:
21
11 21
Enter number:
34
11 21 34
Enter number:
11
the number was entered before
11 21 34
Enter number:
44
11 21 34 44
}
我已经尝试了几个小时了,但没有任何运气。
感谢任何帮助。
谢谢。
干杯。
最佳答案
您只需向输出循环添加一个 if 条件即可。
for (int i =0; i < x; i++) {
if(sid[i]!=0)
System.out.print(sid[i] +" ");
}
关于java - 使用数组显示用户输入的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20655958/