使用 "Scanner" 读取第一个输入字符,并通过 JAVA 中的"For"循环"charAt(0)"



我试图通过提供一个单词来获取第一个字符。

例如

输入一个词:苹果

第一个字符是"a">

进入世界:香蕉

第一个字符是"b">

当我执行代码(如下所述)时,第一个循环提供了正确的charAt(0)结果,但下一个循环的结果会给出"空"字符。(即我通过应用charAt(1)得到正确的结果)

我不知道这个空字符是什么(换行符?制表符?空格?),并且不知道如何删除这个。

并且没有必要在循环中重复声明每个 Scanner 字段。

附言我尝试应用分隔符(例如useDelimiter(System.lineSeparator())或删除前导和尾部空间(例如trim()),但结果是一样的。

import java.util.Scanner;
public class ReadCharacter {
// Declare the scanner field
private static Scanner input;
public static void main(String[] args) {
input = new Scanner(System.in);
// Prompt the user to enter character
for (int i = 0; i < 5; i++) {
System.out.print("Enter a word: ");
char character = input.next().charAt(0);    
// Show the result
System.out.println("The first character is "" + character + ""n");           
}
}
}

预期成果

输入一个词:苹果

第一个字符是"a">

输入一个词:香蕉

第一个字符是"b">

输入单词:橙色

第一个字符是"o">

....

实际结果

输入一个词:苹果

第一个字符是"a">

输入一个词:香蕉

第一个字符是 ">

输入单词:橙色

第一个字符是 ">

....

我试过你的代码。大多数部件工作正常。

public static void main(String[] args) {
//change in this answer
Scanner input = new Scanner(System.in);
// Prompt the user to enter character
for (int i = 0; i < 5; i++) {
System.out.print("Enter a word: ");
char character = input.next().charAt(0);
// Show the result
System.out.println("The first character is "" + character + ""n");
}
}

结果:

Enter a word: apple
The first character is "a"
Enter a word: orange
The first character is "o"
Enter a word: banana
The first character is "b"
Enter a word: nothing
The first character is "n"
Enter a word: wrong
The first character is "w"

最新更新