检查用户输入以确保每个int都是Java中的数字

时间:2016-10-24 22:16:43

标签: java

我正在编写一个程序,要求用户输入以空格分隔的10个数字,然后显示不同的数字。如果用户输入程序崩溃以外的任何数字,我的问题就出现了。我正在尝试使用下一个检查器,但我不确定如何在将它们发送到我的阵列之前检查所有10个数字。这是我的代码任何建议将不胜感激。

    import java.util.Scanner;


public class DistinctNumbers 
{
    static double input;
    static int number;

   public static void main(String[] args) 
   {
      char cont='N';

       do{
           menue();

           menueCatch();

           cont=contOption();


         }while(cont=='Y');
   }

    private static void menue()
        {
            System.out.print("Please make a selection."
                               +"\n1: Begin"
                               +"\n2: Exit"
                               +"\n");
        }

    private static void menueCatch()
        {   
            Scanner userIn= new Scanner(System.in);
            int userChoice=userIn.nextInt();

            String input="";

            switch(userChoice)
            {

                case 1:
                {
                 process();
                 break;
                }

                case 2:
                {

                 break;
                }
            }
        }

    private static void process()
    {
      Scanner userIn = new Scanner(System.in);
        int[] numbers = new int[10];
        int count = 0;


        do 
            {

                System.out.print("Enter ten numbers with a space seperating each number: ");
                while (!userIn.hasNextInt()) 
                {
                    System.out.println("That's not a number!");
                    System.out.println("Re-enter a number: ");
                    userIn.next();
                }
                number = userIn.nextInt();
            } while (number < );

        for (int index = 0; index < numbers.length; index++) 
        {
            int num = userIn.nextInt();

            if (isNew(numbers, num)) 
            {
                numbers[count++] = num;
            }
        }
        System.out.println("The number of distinct number is " + count);
        System.out.print("The distinct numbers are: ");
        for (int index = 0; index < count; index++) {
            System.out.print(numbers[index] + " ");
        }
    }

    private static boolean isNew(int[] numbers, int num) {

        for (int index : numbers){
            if (num == index) return false;
        }
        return true;
    }

     private static char contOption()
        {
            char answer;
        Scanner userIn=new Scanner(System.in);
        System.out.print("\nDo you wish to enter another 10 numbers?(Y/N): ");
        answer=userIn.next().toUpperCase().charAt(0);

        return answer;
        }    






}

1 个答案:

答案 0 :(得分:0)

提示:使用Scanner.hasNextInt或捕获异常。

此外:

  

“任何建议都会受到赞赏。”

我建议您根据Java Style Guide格式化代码...如果您希望其他人阅读它。 (在你要求他们阅读之前格式化它将是一个好主意......)

  • 使用一致的缩进(每个缩进级别4个空格)
  • {阻止之前没有换行符......除了;之后。
  • 根据样式指南在令牌之间使用一致的空格。

我建议您使用boolean而不是char(例如cont)来控制逻辑。