2016-03-21 20 views
2

Java için yeni olduğumu söylemek istiyorum, lütfen benim dağınık kodum için benden nefret etmeyin. Klavyenizde herhangi bir şey girmezseniz, System.out.print ("İsminizi girin") tekrarlanmaz. Döngü dolaşıyor ama bu ifade tekrarlanmıyor. Bazı harfleri girerseniz, baskı ifadesi yürütülür ve nedenini bilmiyorum. İşte daha net hale getirmek için bir resim. Muhtemelen yaptım çok kolay bir hata ama göremiyorum. Bu problemin çözümünde herhangi bir yardım veya ipucu için teşekkürler.Java: Soundex Algoritması

Öyle görünüyor nasıl:

Thats how it looks like

Ben bunu istiyorum nasıl: Ehh Tamam çözüldü

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"); 
      } 
     } 
    } 
} 

. Küçük küçük bir hata.

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

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

[this] (http://stackoverflow.com/a/29690553/4677585) yanıtını okuyun. Satırı bitirmek için '\ n' istiyorsanız' in.nextLine() öğesini kullanın. in.next() 'boş bir dize almaz. – wonderbell

+0

Bu sorunun soundex veya gönderdiğiniz kodun birçoğu ile ilgisi yoktur. Sorunuzu hem soruyu hem de kodu asıl soruna daraltmak için düzenleyin (bir tarayıcı kullanarak satırları okumakla ilgilidir). – Bohemian

+0

Teşekkürler wonderbell. Aradığım şey buydu. Silly me ^^ – Matt

cevap

0

Sizin if-ifadesi olmalıdır olmalıdır:

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

Scanner.next() sadece bir boşluk önce gelenleri dönecektir. Geçerli satırı okuduktan sonra tarayıcıyı otomatik olarak aşağıya hareket ettirecektir.

+0

If-ifade ile ilgisi yoktu ama senin hatan değil. Sadece sorumu yanlış bir şekilde sordum. Yine de teşekkürler – Matt