2016-04-29 88 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