我需要确保用户输入介于10和100之间的数字。如果他们没有,我希望他们输入一个新数字。在星号之间是我的问题(我认为)。提前谢谢。
import java.util.Scanner;
public class Duplicate
{
public static void main(String[] args)
{
Scanner input = new Scanner(System.in);
int[] array = new int[5];
System.out.println("Enter 5 integers between 10 and 100 (inclusive):");
for (int i = 0; i < array.length; i++)
****if ((input.nextInt() <= 100) || (input.nextInt() >= 10))
{
array[i] = input.nextInt();
}
****else { System.out.print("Please enter a number greater than 9 and less than 101."); }
for (int i = 0; i < array.length; i++)
System.out.print(array[i] + ", ");
System.out.println();
System.out.println("Unique values are: ");
for (int i = 0; i < array.length; i++) {
boolean show = true;
for (int j = 0; j < i; j++)
if (array[j] == array[i]) {
show = false;
break;
}
if (show)
System.out.print(array[i] + ", ");
}
}
}
答案 0 :(得分:2)
if ((input.nextInt() <= 100) || (input.nextInt() >= 10)) array[i] = input.nextInt();
您正在调用nextInt
三次,读取接下来的三个整数。因此,如果用户输入5然后是150,那么-1,这将与
if (5 <= 100 || 150 >= 10)
array[i] = -1;
在不应该成功时取得成功。
您还使用||
(或)代替&&
(和),因此如果用户在修复上述问题后输入1,则看起来像
if (1 <= 100 ||/* or */ 1 >= 10)
array[i] = 1;
因为1 <= 100
而成功。
相反,只需阅读一个int
并使用&&
。
int userEnteredInt = input.nextInt();
if (10 <= userEnteredInt && userEnteredInt <= 100)
array[i] = userEnteredInt;