Java 为什么赢了';你能在这里打印最后一个字吗?
为什么要打印整个字符串“1fish2fish” 但这只打印“1fish2”,即使我输入“1,fish,2,fish”Java 为什么赢了';你能在这里打印最后一个字吗?,java,java.util.scanner,system.in,Java,Java.util.scanner,System.in,为什么要打印整个字符串“1fish2fish” 但这只打印“1fish2”,即使我输入“1,fish,2,fish” 在第一种情况下,扫描器不需要最后一个分隔符,因为它知道没有更多的字符。因此,它知道最后一个标记是“fish”,并且没有更多的字符要处理 在System.In扫描的情况下,只有在系统输入中输入第四个“,”时,第四个令牌才被视为已完成 请注意,默认情况下,空格被视为分隔符。但是,一旦您使用useDelimiter指定了一个备用分隔符,那么空格字符就不再对标记进行划分 事实上,您的第一
在第一种情况下,扫描器不需要最后一个分隔符,因为它知道没有更多的字符。因此,它知道最后一个标记是“fish”,并且没有更多的字符要处理 在System.In扫描的情况下,只有在系统输入中输入第四个“,”时,第四个令牌才被视为已完成 请注意,默认情况下,空格被视为分隔符。但是,一旦您使用useDelimiter指定了一个备用分隔符,那么空格字符就不再对标记进行划分 事实上,您的第一次试用可以修改以证明空白字符不再是分隔符
public static void main(String[] args) {
String input = "1,fish,2,fish\n\n\n";
Scanner sc = new Scanner(input);
sc.useDelimiter(",");
System.out.print(sc.nextInt());
System.out.println(sc.next());
System.out.print(sc.nextInt());
System.out.println(sc.next());
System.out.println("Done");
sc.close();
}
新行字符将被视为第四个标记的一部分。扫描器等待您输入另一个“,”因此当您输入“,”之后,它将在
1fish2
之后立即打印fish
所以通过
1,fish,2,fish,
而不是1,fish,2,fish
我检查了第一个片段;它正确地打印了-
1fish
2fish
链接-
如果您的期望有所不同,请告知我们。是的,第一个片段按预期打印。第二个是我在理解上遇到的问题。
public static void main(String[] args) {
String input = "1,fish,2,fish\n\n\n";
Scanner sc = new Scanner(input);
sc.useDelimiter(",");
System.out.print(sc.nextInt());
System.out.println(sc.next());
System.out.print(sc.nextInt());
System.out.println(sc.next());
System.out.println("Done");
sc.close();
}
1fish
2fish