2017-08-30 14 views
-1

空白を入力しないようにするか、値を入力しないようにしています。 しかし、何も動作しません。入力された値がなくても、プログラムは自分のエラーを印刷することなくさらに進めます。私は間違って何をしていますか? 11thdimension @として my code exampleJavaスキャナが空白を入力しないようにする方法

Scanner nameScan = new Scanner(System.in); 
System.out.print("Input your name: "); 

String newcomer = nameScan.nextLine();     
player.setName(newcomer); 
String userName = player.getName(); 
userName = userName.trim(); 


if (userName.length()==0) { 
    System.out.println(" "); 
    System.out.println("You have to set up a player name first... "); 
    System.out.println(" ");        
} 
else {... 
+0

何かが起きないようにするには、それをチェックする必要があります。 'newcomer'で提供される値が空白かどうかをチェックし、そうでない場合にのみ処理を進めます。 – 11thdimension

+0

正しく入力されるまで、入力をループするのは理にかなっています。私は以下の答えにコード例を書いています。 – Assafs

+0

参考までに、 'userName.length()== 0'を実行する必要はありません。単に' userName.isEmpty() 'を実行するだけです。同じ動作ですが、2番目の方が読みやすくなります(0はここでは魔法の数字です)。 – Michael

答えて

0

あなたが入力を検証する必要がある、と述べました。

あなたのような何かを行うことができます:

if (newcomer.isEmpty()) { 
    System.out.println("Please write something"); 
} 

それともwhileループを行うと、正しい入力を求め続けることができます。

+1

空白もチェックするので、StringUtils.IsBlank()または.hasText()を使用します。 – PanBrambor

+2

@PanBrambor 'StringUtils'はJDKにありません。初心者として、彼はすでにApache Commonsを含んでいるのではないかと疑いがあります。 – Michael

+1

@Michaelそれはapache、または春ですが、公正な点、私はあまりにもこれにaclimatedだと思います。 – PanBrambor

0

あなたのコード

if(username.length() == 0) 

は、スペースが文字列の長さにカウントされるので、ユーザー名にスペースが含まれているかどうかをチェックしません。

空の文字列の入力をチェックするために(スペース(複数可)を含んでもよい)、あなたが行うことができます:

さらに
if("".equals(username.replaceAll("\\s+",""))) //or 

if("".equals(username.trim())     //or 

if(username.isEmpty())     

より、あなたの代わりに、検証のためのDO-whileループを使用したいと思いますif文を使う方法。

+0

"スペースが文字列の長さに向かってカウントされるため"彼はすでにそれをトリミングしています。 – Michael

+0

また、.equals(...) 'も提案しないでください。 'isEmpty'は客観的に優れています。 – Michael

+0

@Michaelと '.isEmpty(...)'は 'NullPointerException'の傾向があります。それぞれには独自の賛否両論があります。 – user3437460

関連する問題