私はHackerRankの問題を解決するために努力してきました。私は現在のものを稼働させることができたが、不必要なコードが含まれていると感じ、誰かが私に悪い習慣を拾うのが嫌なので、それをより良くする方法を教えてもらえる。不要なscan.nextLine()を置き換える方法を改善しました。 StdIn Stringを見つけるには?
このレッスンでは、HackRankコード30日目(2日目)、Stdinから3行(Int、Double、String)を読み込み、スキャナを使用してそれらを読み取り、保存して操作してください。 INTとダブル用
Scanner scan = new Scanner(System.in);
/* Declare second integer, double, and String variables. */
int myI = scan.nextInt();
double myDouble = scan.nextDouble();
scan.nextLine();
String myString = scan.nextLine();
スキャンが十分に簡単だったが、私はいくつかの問題に遭遇した文字列をスキャンしようとしたときに:私はscan.nextを使用した場合
A)();私は完全な文字列の代わりに1つの単語を得た。
B)scan.nextLine()を使用した場合。私は空白の行を戻しました。
私はちょうどscan.nextDouble()を行ったので、それを示唆している人がいました。 scan.nextLine();その行の最後に空白を読み込んでいただけです(これはあまり意味がありませんでした)。そして、余分な "scan.nextLine();"私の文字列を宣言する前にそれは動作するはずです。
もちろんです。私は本当に理由を理解していないし、これを解決するための正しい方法だとは思わない。それを頻繁にやらなければならないのであれば、コードを膨らませることになるでしょうか?
誰でも上のいくつかの光を当てることができます:
1)なぜscan.nextLine();私は余分なものを追加するまで空白に戻りましたか?
2)スキャンから文字列を見つけるより良い方法はありますか?
これは、問題を回避するのに役立ちます。nextDoubleを使用して、私はその行全体ではなくダブルを選択していました。 これについてもっと雄弁な解決策がありますか? – AdamSC
@ AdamS.Cochran私が知る限り、実際にはありません。これは私が今使っている方法です。また、これが正しいとマークすることをお勧めします。 – coolioasjulio