为什么打印整个字符串“1fish2fish”...
import java.util.Scanner;
class Main {
public static void main(String[] args) {
String input = "1,fish,2,fish";
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());
}
}
但即使我输入“1,鱼,2,鱼”,这只打印“1fish2”?
import java.util.Scanner;
class Main {
public static void main(String[] args) {
System.out.println("Enter your string: ");
Scanner sc = new Scanner(System.in);
sc.useDelimiter(",");
System.out.print(sc.nextInt());
System.out.println(sc.next());
System.out.print(sc.nextInt());
System.out.println(sc.next());
}
}
答案 0 :(得分:4)
在第一种情况下,扫描仪不需要最后一个分隔符,因为它知道不再有字符。所以,它知道最后一个标记是“鱼”。并且没有其他角色可以处理。
在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();
}
新行字符将被视为第四个标记的一部分。
答案 1 :(得分:1)
答案 2 :(得分:0)
扫描仪等待你输入另一个','所以当你输入','然后它会在1fish2
之后立即打印鱼。
所以通过1,fish,2,fish,
代替1,fish,2,fish