如何获取用户在java中输入的字符串的第一个字符



我希望用户输入一个字符串,比如说他或她的名字。这个名字可以是杰西卡,也可以是史蒂夫。我希望程序识别字符串,但只输出前三个字母。它实际上可以是我决定要输出的任何数量的字母(在本例中为3(,是的,我已经尝试过

charAt((;

但是,我不想在程序中硬编码一个字符串,我想要一个用户输入。所以它给了我一个错误。下面的代码就是我所拥有的。

public static void main(String args[]){
Scanner Name = new Scanner(System.in);


System.out.print("Insert Name here ");
System.out.print(Name.nextLine());
System.out.println();


for(int i=0; i<=2; i++){
System.out.println(Name.next(i));

}

}

错误发生在

System.out.println(Name.next(i));它在.next区域下划线,它给我一个错误,状态为

"类型Scanner中的Method next(String(不适用于参数(int(";

现在我知道我的输出应该是字符串类型的,每次迭代都应该是int,所以0是字符串的第一个索引,1应该是第二个索引,2应该是第三个索引,但它是一个创建字符串的字符,我很困惑。

System.out.println("Enter string");
Scanner name = new Scanner(System.in);
String str= name.next();
System.out.println("Enter number of chars to be displayed");
Scanner chars = new Scanner(System.in);
int a = chars.nextInt();
System.out.println(str.substring(0, Math.min(str.length(), a)));

char类型自Java 2以来基本上已被破坏,遗留版本自Java 5以来也已被破坏。作为一个16位的值,char在物理上不能表示大多数字符。

相反,使用代码点整数来处理单个字符。

调用String#codePoints以获得每个字符的代码点的IntStream

通过调用limit来截断流,同时传递所需的字符数。

通过传递对StringBuilder类上找到的方法的引用,使用生成的文本构建新的String

int limit = 3 ;  // How many characters to pull from each name. 
String output = 
"Jessica"
.codePoints() 
.limit( limit ) 
.collect( 
StringBuilder::new, 
StringBuilder::appendCodePoint, 
StringBuilder::append     
)                                        
.toString()
;

Jes

当您从用户处获取条目时,最好验证输入,以确保其符合代码规则,以免引发异常(错误(。如果发现用户的输入无效,则为用户提供输入正确响应的机会,例如:

Scanner userInput = new Scanner(System.in);

String name = "";
// Prompt loop....
while (name.isEmpty()) {
System.out.print("Please enter Name here: --> ");
/* Get the name entry from User and trim the entry
of any possible leading or triling whitespaces.  */
name = userInput.nextLine().trim();

/* Validate Entry...
If the entry is blank, just one or more whitespaces, 
or is less than 3 characters in length then inform
the User of an invalid entry an to try again.     */
if (name.isEmpty() || name.length() < 3) {
System.out.println("Invalid Entry (" + name + ")!n"
+ "Name must be at least 3 characters in length!n"
+ "Try Again...n");
name = "";
}
}

/* If we get to this point then the entry meets our
validation rules. Now we get the first three 
characters from the input name and display it.  */
String shortName = name.substring(0, 3);
System.out.println();
System.out.println("Name supplied: --> " + name);
System.out.println("Short Name:    --> " + shortName);

正如您在上面的代码中看到的,String#substring((方法用于获取用户输入的字符串(名称(的前三个字符。

相关内容

  • 没有找到相关文章

最新更新