这个问题在这里已有答案:
import java.util.Scanner;
public class uppertolower {
public static void main(String[] args) {
Scanner scr = new Scanner(System.in);
System.out.print("Input a character: ");
char ch = scr.next().charAt(0);
System.out.println("ch is " + ch);
System.out.print("\nInput a string: ");
String str = scr.nextLine();
System.out.println("str is " + str);
scr.close();
}
}
如果我为角色输入'a',我会自动获得以下输出:
https://i.imgur.com/WDDpiJl.png
控制台不要求我输入字符串并自动输出最后一个println。我很困惑我做错了什么。
在两种情况下都使用nextLine()
。
System.out.print("Input a character: ");
char ch = scr.nextLine().charAt(0); // Use nextLine() instead of next()
System.out.println("ch is " + ch);
System.out.print("\nInput a string: ");
String str = scr.nextLine(); // No change
System.out.println("str is " + str);
next()
找到并返回下一个完整的标记,而nextLine()
返回完整的行,并将扫描仪移动到下一行。
请参阅 - Scanner (Java Platform SE 7)
public String next()
查找并返回此扫描程序中的下一个完整令牌。在完成令牌之前和之后是与分隔符模式匹配的输入。即使之前的hasNext()调用返回true,此方法也可能在等待输入扫描时阻塞。
public String nextLine()
使此扫描器前进超过当前行并返回跳过的输入。此方法返回当前行的其余部分,不包括末尾的任何行分隔符。该位置设置为下一行的开头。由于此方法继续搜索输入以查找行分隔符,因此如果不存在行分隔符,则它可以缓冲搜索要跳过的行的所有输入。
使用next()
的一个简单示例:
public class Test02 {
public static void main(String[] args) {
String s = "This is just a sample sentence";
Scanner scanner = new Scanner(s);
// find the next token and print it
System.out.println("Token 1 - " + scanner.next());
System.out.println("Token 2 - " + scanner.next());
// ... and so on
scanner.close();
}
}
输出:
Token 1 - This
Token 2 - is