2016-04-29 24 views
1

このコードでは、ユーザ名を入力して長さを20文字に制限しますが、ユーザの名前が20より大きい場合にのみ動作しますchars。これを解決する方法に関するアイデアはありますか?ユーザの文字数を制限するJavaの文字列でスキャナの文字を入力

ありがとうございます。

String name; 

Scanner textIn = new Scanner(System.in); 
System.out.print("Enter your Name "); 
name = textIn.nextLine(); 

String cutName = name.substring(0, 20); 
if (name.length()>20) { 
    name = cutName; 
System.out.print("Hello " +name+"!"); 
} 
+0

サブストリングを実行する前に、長さチェックを行う必要があります。 'String cutName = name.length()<= 20? name:name.substring(0,20); ' – ParkerHalo

+0

System.out.print(" Hello "+ name +"! ");ループの外 –

答えて

0

String cutNameをif内に配置すると、エラーが消えるはずです。ストリング自体よりも長いストリングからは、部分文字列を取り出すことはできません。

if (name.length()>20) { 
    String cutName = name.substring(0, 20); 
    name = cutName; 
} 

System.out.print("Hello " +name+"!"); 
+0

ありがとう!出来た。 – Ekaterina1234

+0

問題はありませんが、Bergerの回答もうまくいくはずですが、これは初心者にとっては少しシンプルだったようです。 – namlik

+0

はい、どちらも試してみましたが、うまくいきましたが、あなたの言ったように、初心者の方が簡単でした。 – Ekaterina1234

2

20とStringの間の低いインデックスを取得してください。

name.substring(0, Math.min(20,name.length())); 
+0

答えをありがとう、それは働いた – Ekaterina1234

関連する問題