2016-03-21 4 views
2

私はJavaに新しいので、私の乱雑なコードのために私を嫌ってはいけないと言いたい。キーボードに何も入力しない場合、System.out.print( "あなたの名前を入力")は繰り返されません。ループは回りますが、この文は繰り返されません。いくつかの文字を入力すると、print文が実行され、その理由がわかりません。ここには、それをより明確にするための絵があります。おそらくそれは私が作った非常に簡単な間違いですが、私はそれを見ることができません。 この問題を解決するための助けまたは手がかりをありがとう。Java:Soundexアルゴリズム

それがどのように見えるかです:

Thats how it looks like

私はそれになりたい方法ですそれに:

Thats how I want it to be

package loop; 

import java.util.Scanner; 
public class while_loop 
{ 
    public static void main(String[] args) 
    { 
     String word2 = null; 
     boolean T_F = true; 
     while (T_F == true) 
     { 
      System.out.print("Enter your name:"); 
      Scanner in = new Scanner(System.in); 
      word2 = in.next().toUpperCase(); 
      if (word2 != null && word2.length() > 3) 
      { 
       in.close(); 
       T_F = false; 
       System.out.println("Done"); 
      } 
     } 
    } 
} 

えっOKを解決しました。小さな小さな間違い。

word2 = in.nextLine().toUpperCase(); 
+1

[this](http://stackoverflow.com/a/29690553/4677585)答えを読んでください。 '\ n'で行を終了させるには' in.nextLine() 'を使います。 'in.next()'は空文字列をとらないでしょう。 – wonderbell

+0

この質問には、soundexやあなたが投稿したほとんどのコードとは何の関係もありません。質問を編集して質問とコードを実際の問題(スキャナを使用して行を読むことについて)に絞り込みます。 – Bohemian

+0

wonderbellありがとうございます。それが私が探していたものです。愚かな私^^ – Matt

答えて

0

あなたのif文があるべき

word2 = in.next().toUpperCase(); 

を次のようになります。

if (!(word2 = in.nextLine().toUpperCase()).isEmpty() && word2.length() > 3){ 
    in.close(); 
    T_F = false; 
}   

Scanner.next()だけのスペースの前に来るものが返されます。

Scanner.nextLine()は、現在の行を読み取った後にスキャナを自動的に下に移動します。

+0

それは私のIf文とは関係がありませんでしたが、あなたのせいではありません。私はちょうど間違った方法で私の質問をしました。とにかくありがとう – Matt