2016-08-24 10 views
0

私はスキャナnextLine Javaはエラー

1.Integer

2.Double

3.String それぞれを受け入れるようにJavaでプログラムをしたいです。 と上記を表示します。

しかし、私が直面している問題は、整数を入力して2倍の文字列を入力するように促した後です。その値を直接表示します。私はこれまでSOLNを検索 として、私は二重の値を受け入れた後

scan.nextLine(); 

を使用する必要があることを知りました。

誰でもこの行を使用する理由を教えていただけますか。 私はnextLineの文書を読んでいます。しかし、私は理解しませんでした。

+0

これは、入力文字列として改行文字がかかるため。 –

+0

あなたがダブルを挿入すると、あなたは何の数字を聞いているのですか? –

+0

next()、nextInt()またはnextFoo()メソッドを使用した後に[スキャナがnextLine()をスキップしている可能性があります](http://stackoverflow.com/questions/13102045/scanner-is-skipping-nextline-after- using-next-nextint-or-other-nextfoo) –

答えて

2
import java.util.Scanner; 

public class Solution { 

    public static void main(String[] args) { 
     Scanner scan = new Scanner(System.in); 
     int i = scan.nextInt(); 
     double d = scan.nextDouble(); 
     // scan.nextLine();   **Why should I write this ??** 
     String s = scan.nextLine(); 

     System.out.println("String: " + s); 
     System.out.println("Double: " + d); 
     System.out.println("Int: " + i); 
    } 
} 
nextLine()のJavadocによる

進歩現在の行過去このスキャナと がスキップされたことの入力を返します。このメソッドは、最後の行区切り文字を除いて、現在の行の残りの部分を返します。 位置は、 の次の行の先頭に設定されます。

ダブル値を入力した後、nextLine()は、ダブル数値を含む行の余りを読み取ります。そのため、入力文字列には別のnextLine()が必要です。 next()を使用して

はあなたの問題を解決するだろう:

Scanner scan = new Scanner(System.in); 
int i = scan.nextInt(); 
double d = scan.nextDouble(); 
String s = scan.next(); 

System.out.println("String: " + s); 
System.out.println("Double: " + d); 
System.out.println("Int: " + i); 
+0

ありがとうございました。私はそれが二重の後に次の行に行くと思った。 – Prajwal