import java.util.*;
public class three_one
{
public static void main(String[] args)
{
Scanner keyboard = new Scanner(System.in);
String answer;
do
{
String sentence;
System.out.println("Please enter a one-line sentence:");
sentence = keyboard.nextLine();
System.out.println("sentence:"+ sentence);
System.out.println("Do you want to enter another one-line sentence ?");
System.out.println("Enter yes or no.");
answer = keyboard.nextLine();
}
while(answer.equalsIgnoreCase("yes"));
}
}
这段代码是我做的练习题中截取出来的一部分。
我的问题是:两个都是nextLine(),运行正常,
两个都是next(),运行正常,但不适用于句子,只适用于单词。
前面一个是nextLine(),后面一个是next(),当answer是no是,正常,当answer是yes时,程序会自动运行,不给我输入的机会,并且输出的句子为空。
前面一个是next(),后面一个是nextLine(), setence只输出一个单词,然后读到"enter yes or no" 时,程序就卡住了。
public class three_one
{
public static void main(String[] args)
{
Scanner keyboard = new Scanner(System.in);
String answer;
do
{
String sentence;
System.out.println("Please enter a one-line sentence:");
sentence = keyboard.nextLine();
System.out.println("sentence:"+ sentence);
System.out.println("Do you want to enter another one-line sentence ?");
System.out.println("Enter yes or no.");
answer = keyboard.nextLine();
}
while(answer.equalsIgnoreCase("yes"));
}
}
这段代码是我做的练习题中截取出来的一部分。
我的问题是:两个都是nextLine(),运行正常,
两个都是next(),运行正常,但不适用于句子,只适用于单词。
前面一个是nextLine(),后面一个是next(),当answer是no是,正常,当answer是yes时,程序会自动运行,不给我输入的机会,并且输出的句子为空。
前面一个是next(),后面一个是nextLine(), setence只输出一个单词,然后读到"enter yes or no" 时,程序就卡住了。
串值的一部分加入如下代码
int n = ScannerObjext.nextInt()
String s1 = ScannerObjext.nextLine();
String s2 = ScannerObjext.nextLine();
假设输入:
42
and don't you
forget it
在这种情况下,n的值为42,s1设置为空白字符,s2设置为and don't you
因为nextInt()读入42,但并没有读入"\n",因此S1调用42所在行的剩余部分结合不同的方法从键盘读取字符输入时,有时不得不包含一条额外的nextLine()调用,以去除行的结束符。
此扫描器执行当前行,并返回跳过的输入信息。 此方法返回当前行的其余部分,不包括结尾处的行分隔符。当前位置移至下一行的行首。
因为此方法会继续在输入信息中查找行分隔符,所以如果没有行分隔符,它可能会缓冲所有输入信息,并查找要跳过的行。 public String next()
查找并返回来自此扫描器的下一个完整标记。完整标记的前后是与分隔模式匹配的输入信息。