2016-10-24 9 views
-2

私は10個の数字をスペースで区切って入力するように求めているプログラムを書いています。ユーザーがプログラムがクラッシュする番号以外に何かを入力した場合、私の問題が発生します。私は次のチェッカーを使用しようとしていますが、配列に送る前に10個の数字をすべてチェックする方法がわかりません。ここに私のコードは何かアドバイスをいただければ幸いです。ユーザインプットをチェックして各intがJavaの数字であることを確認してください

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; 
     }  






} 
+0

入力を取っている間にtry catchを使用すると、 –

+1

がクラッシュすると、スタックトレースが取得され、どこに、なぜそれが表示されますか? – John3136

答えて

0

ヒント:Scanner.hasNextIntを使用するか、例外をキャッチしてください。また

"何かアドバイスをいただければ幸いです。"

他の人に読んでもらいたい場合は、Java Style Guide ...に従ってコードをフォーマットすることをお勧めします。 (あなたはそれが良いでしょう読み取るためにそれらを求める前に、そして...それをフォーマット)

  • 利用一貫したインデント(字下げレベルごとに4つのスペース){ブロックの前
  • ノー改行...除きます;の後。
  • スタイルガイドに従って、トークン間に一貫した空白を使用します。

は、私はあなたがコントロールロジックにbooleanではなくchar(例えばcont)を使用することをお勧めします。

関連する問題