验证用户的整数输入?

时间:2011-10-09 00:31:39

标签: java validation

我需要确保用户输入介于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] + ", ");

    }

  }

}

1 个答案:

答案 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;