2016-04-29 47 views
1

此代碼在輸入用戶名時應將其打印出來,並將其長度限制爲20個字符,但僅當用戶名長於20字符。當它低於20時,我會遇到錯誤。關於如何解決此問題的任何想法?限制用戶中的字符數在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

set System.out.print(「Hello」+ name +「!」);出循環 –

回答

0

如果將字符串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