3

Javaでユーザー入力を取得するためにスキャナーを使用しています。nextInt() を使用し、ユーザーが「2 5」と入力すると、値「2」が割り当てられ、5 が破棄されます。そのような入力がエラーであることを表示したい場合はどうすればよいですか? 私の頭に浮かぶ解決策の 1 つは、nextInt() の代わりに nextString() を使用して、解決策を講じることです。しかし、誰かがより良い解決策を提案できますか?

スペースの後に整数を捨てるのではなく、次の入力に使用していることに気付きました。

import java.util.Scanner;
class Test{
static Scanner in=new Scanner(System.in);
static void trial(){
    int k=in.nextInt();
    System.out.println(k);
    System.out.println(k);
}

public static void main(String[] args){     
    int k=in.nextInt();
    System.out.println(k);
    System.out.println(k);
    trial();        
}
}
4

3 に答える 3

8

1.最初に使用して行全体を読み取りますnextLine()

2.Integer.parseInt()メソッドを使用して整数入力を検証します

例えば:

Scanner scan = new Scanner(System.in);
String s = scan.nextLine();

try{
    Integer.parseInt(s);
}
catch(NumberFormatException ex){
    System.out.println("Its not a valid Integer");
}
于 2012-07-25T05:31:33.340 に答える
2

個人的には、一度に行を読み、 String.split() を使用して個々の「単語」を解析することをお勧めします。

http://pages.cs.wisc.edu/~hasti/cs302/examples/Parsing/parseString.html

単語を区切るためにスペースを使用して、フレーズを単語に分割したいと考えています。例えば

the music made   it   hard      to        concentrate

この場合、区切り文字 (スペース) は 1 つだけであり、連続する区切り文字 (つまり、行に複数のスペース) は 1 つの区切り文字として扱われます。この文字列を Java で解析するには、次のようにします。

String phrase = 
  "the music made   it   hard      to        concentrate"; 
String delims = "[ ]+"; 
String[] tokens =  phrase.split(delims);
于 2012-07-25T05:26:14.423 に答える
0

から使用readLine()BufferedReaderます。Stringユーザーが入力するまでのすべてを含むを取得します。そこから、入力に対して必要なことを行い、期待されるフォーマットに準拠していることを確認できます。

于 2012-07-25T05:25:02.573 に答える