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。我对自己做错了感到困惑。
答案 0 :(得分:0)
在两种情况下均使用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)
公共字符串next()
查找并返回此扫描仪的下一个完整令牌。完整的标记在其前面,然后是与定界符模式匹配的输入。即使先前调用hasNext()返回true,此方法也可能在等待输入扫描时阻塞。
公共字符串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