2017-04-25 1 views
0

私はユーザーにいくつかの数字を尋ねて、ユーザーが 'q'を入力するまでそれをやり続けることができるプログラムを作る必要がありますが、hasNextIntが働いているように思えます。私はJavaに非常に初心者で、地面コースatmをやっています。ここで整数とテキストの両方に1つのスキャナを使用するには?

は私が私が今までテキストは、「選択」変数

私はそれをどのように行うのですかスキャナで入力されたものを保存しておきたい、これまで

public class Matte 
{ 
    public static void main (String[] args) 
    { 

     int r1 = 0; 
     int h1 = 0; 
     int r2 = 0; 
     int h2 = 0; 
     int level = 1; 

     String choice = new String(); 

     Scanner values = new Scanner(System.in); 
     values.useDelimiter("\\s"); 

     if (level == 1) 
     { 
      if(!values.hasNextInt()) 
       r1 = values.nextInt(); 
      else choice = values.nextLine(); 
      if(!values.hasNextInt()) 
       h1 = values.nextInt(); 
      else choice = values.nextLine(); 
      if(!values.hasNextInt()) 
       r2 = values.nextInt(); 
      else choice = values.nextLine(); 
      if(!values.hasNextInt()) 
       h2 = values.nextInt(); 
      else choice = values.nextLine(); 
     }  

    } 
} 

をやっていることです?

+0

「サンプル入力」と「サンプル出力」を教えてください。 –

+0

次がintかどうかをチェックし、整数に保存していないかどうかを調べるのは奇妙に見えますか? 'String.valueOf(values.nextLine())'については – cYrixmorten

+0

'hasNextInt()'が** false **のときに 'nextInt()'を呼び出すのはなぜですか? – shmosel

答えて

0

私はあなたの問題を本当に理解していませんでしたが、ここでは、問題を解決するための解決方法があります。これらの整数をArrayListに追加し、ユーザーが 'q'を入力するとプログラムを停止します。それがあなたを助けることを願ってください。乾杯!

public class Matte 
{ 
    public static void main (String[] args) 
    { 

     ArrayList<Integer> numbers = new ArrayList(); 
     int level = 1; 

     String choice; 

     Scanner values = new Scanner(System.in); 
     values.useDelimiter("\\s"); 

     if (level == 1) 
     { 
      while(true){ 
       choice = values.nextLine(); 
       if(choice.equals("q")) 
        break; 
       else 
        numbers.add(Integer.parseInt(choice)); 
      } 
     }  

    } 
} 
+0

'else {try {numbers.add(Integer.parseInt(choice)); } catch(Exception e){/ *数字ではないので入力を無視する* /}} ' – cYrixmorten

+0

arraylistの数字にはどうやってアクセスするのですか?通常の配列としては機能しません。 – Mattias

+0

この場合は、次のようになります。 "numbers.get(0)":インデックス0にアクセスします。 –

関連する問題