我已经扫描了一个int类型的输入,然后我尝试第二次输入String类型,在开头有空格,并且在打印输入时,我希望第二个输入打印为它是(带有空格)。
class Input{
public static void main (String[] args) throws java.lang.Exception{
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
String s=sc.next();
s=s+sc.nextLine();
System.out.println(n);
System.out.println(s);
}
}
输入:
4
hello world.
预期产出:
4
hello world.
实际输出:
4
hello world.
答案 0 :(得分:4)
Scanner.next()
使用默认分隔符,它将捕获任何空格序列。请改用Scanner.nextLine()
:
int n = sc.nextInt();
sc.nextLine(); // consume only the newline
String s = sc.nextLine();
答案 1 :(得分:1)
默认分隔符是一个或多个空格:
private static Pattern WHITESPACE_PATTERN = Pattern.compile(
"\\p{javaWhitespace}+");
因此sc.next()
生成"hello"
和sc.nextLine()
读取当前行的其余部分会产生"world"
。
您可以将分隔线字符设置为第二个输入的分隔符,然后删除
s = s + sc.nextLine();
不再需要:
...
sc.useDelimiter(System.lineSeparator());
String s = sc.next();
答案 2 :(得分:1)
使用sc.nextLine()
代替next()。
因为对于nextLine()
,要读取的标记是整行,对于next()
,要读取的标记是下一个单词。
答案 3 :(得分:-2)
import java.util.*;
class Input{
public static void main(String[] main){
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
sc=new Scanner(System.in);
String s=sc.nextLine();
System.out.println(n);
System.out.println(s);
}
}