2017-02-09 5 views
0

HackerRankチュートリアルで作業していますが、ダブルで読み込んだ後に改行文字を取り除く良い方法がありますか?それはちょうどnextLine()nextLineを読む方が良い

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(); 
    String b = scan.nextLine(); 
    String s = scan.nextLine(); 
} 

}

注意を繰り返すことは「ハック」本当にマニュアルと感じている:この

+0

私はあなたのコードに余分な 'nextLine()'がありません。 – shmosel

+0

私は、 'String b'は、前のdoubleを読み込んだ後にスキャナが改行文字を渡す以外に実際には使用されていないことを明確にしておきましょう。 –

+0

次に、変数を作成しないでください。メソッドを呼び出すだけです。 – shmosel

答えて

1

ついて行くにはあまりハック方法がある場合は、ちょうど求めているとして、コードが動作します一度に行を操作すると、末尾の改行を残してnextDouble()(またはnextInt())の呼び出しを心配する必要はありません。同様に、

Scanner scan = new Scanner(System.in); 
int i = Integer.parseInt(scan.nextLine()); 
double d = Double.parseDouble(scan.nextLine()); 
String s = scan.nextLine(); 

場合は、intdoubleが同じライン上にあるように、あなたは何ができるようにしたい

Scanner scan = new Scanner(System.in); 
int i = scan.nextInt(); 
double d = Double.parseDouble(scan.nextLine()); 
String s = scan.nextLine(); 

しかし、あなたの入力フォーマットを知らなくても、それはまたはではないかもしれません役に立った私はを手元の問題のために最も可読なバージョン(の構文解析入力)を好むでしょう。

+1

'int i = scan.nextInt()'整数は、doubleと同じ行に置くことができます。 '123 2.3' – donkon

+0

優秀、これは**まさに**私が探していたものです。ありがとうございました!答えとしてマークする。 –

+0

@donkonこの場合、 'split(" \\ s + ")'を使って解析することができます。より形式的な文法が必要な場合はパーサジェネレータを使用してください。 –

関連する問題