验证用户的整数输入?

问题描述:

我需要确保用户输入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

请了解如何缩进代码。不遵循标准指南并不聪明。 –

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; 
+0

谢谢。我有一种感觉,这种说法可能是一个问题。我想我也不明白nextInt()是如何读取的。再次感谢。 – David