"编写一个Java程序,要求用户输入五个数字。
该程序应防止用户多次输入相同的号码。它还应该在屏幕上打印用户已输入的数字。"
输出应该变为:
请输入一个数字:3
列表:3
请输入一个数字:16
列表:3 16
请输入一个数字:16
号码已经在列表中!!!再试一次 !!!
列表:3 16
请输入一个数字:23
列表:3 16 23
当然,这些数字并不一定是我所说的。请帮忙?到目前为止我所拥有的:
Scanner in = new Scanner(System.in);
System.out.print("Please, enter a number: ");
int num[] = new int[5];
for (int i = 0; i < num.length; i++)
{
num[i] = in.nextInt();
}
编程很难..我尝试单独的用户输入并以这种方式列出,但我不知道如何检查是否已输入数字。
非常感谢帮助!
答案 0 :(得分:1)
我保证这不是你老师想要你做的事情。 BUT
public static boolean arrayContains(String[] arr, String targetValue) {
return Arrays.asList(arr).contains(targetValue);
}
是最快捷的方式。
如果你不能这样做,或者不习惯这样做,那么循环通过阵列将是另一种解决方案。也许是你老师想要你使用的那个。
public static boolean isInArray(String[] arr, String targetValue) {
for(String s: arr){
if(s.equals(targetValue))
return true;
}
return false;
}
答案 1 :(得分:1)
这是一个接近你的知识的基本答案,我希望你能理解。
for (int i = 0; i < num.length; i++){
int current = in.nextInt(); // getting first input for number 'i'
while( Arrays.asList(num).contains(current)){ // checking if number already exists
// Number already exist, will loop this untill you give a unique one
System.out.print("Number already exist. Try again: ");
current = in.nextInt();
}
// Printing the output
System.out.print("List: ")
for(var j =0; j < i; j++){
System.out.print(num[i]+" ");
}
我将Array
转换为List
以检查号码是否已存在。如果您感觉不舒服,可以使用更基本的功能进行切换,例如DejaVuSansMono提供的isInArray()
。
答案 2 :(得分:0)
你想在这里使用while循环而不是for循环。当你不知道循环执行的次数时,会使用while循环。 for循环通常用于固定数量的执行。
Scanner in = new Scanner(System.in);
int num[] = new int[5];
int index = 0;
while(index != 5)
{
boolean add = true;
System.out.println("Please, enter a number: ");
int tempInt = in.nextInt();
for(int i = 0; i < num.length; i++)
{
//check if num[i] == tempInt if it does set add to false because its already in the array
}
//if add is true add number to num[index] and increment index
//if add is false send message to user saying that the number is already in the list
for(int i = 0; i < index; i++)
{
System.out.print(num[i] + " ");
}
}
这应该给你一个开始。我没有为你写一切,但我给了你一个模板和一些评论。希望这可以帮助你弄清楚其余部分。