为什么 Java 不在此处打印最后一个词?
Why won't Java print last word here?
为什么要打印整个字符串“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,fish,2,fish”,它也只会打印“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());
}
}
在第一种情况下,扫描器不需要最后一个分隔符,因为它知道没有更多的字符。所以,它知道最后一个标记是 'fish' 并且没有更多的字符要处理。
在 System.in 扫描的情况下,只有在系统输入中输入第四个 ',' 时,第四个标记才被视为已完成。
请注意,默认情况下,白色 space 被视为分隔符。但是,一旦您使用 useDelimiter 指定了备用分隔符,那么白色 space 字符将不再划分标记。
事实上,您的第一次试验可以修改以证明白色 space 字符不再是分隔符...
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();
}
新行字符将被视为第四个标记的一部分。
Scanner 等待您输入另一个 ',',所以当您输入 ',' 之后它会在 1fish2
后立即打印鱼。
所以通过 1,fish,2,fish,
而不是 1,fish,2,fish
我检查了第一个片段;它正在正确打印 -
1fish
2fish
Link - http://code.geeksforgeeks.org/jK1Mlu
如果您的期望有所不同,请告诉我们。
为什么要打印整个字符串“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,fish,2,fish”,它也只会打印“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());
}
}
在第一种情况下,扫描器不需要最后一个分隔符,因为它知道没有更多的字符。所以,它知道最后一个标记是 'fish' 并且没有更多的字符要处理。
在 System.in 扫描的情况下,只有在系统输入中输入第四个 ',' 时,第四个标记才被视为已完成。
请注意,默认情况下,白色 space 被视为分隔符。但是,一旦您使用 useDelimiter 指定了备用分隔符,那么白色 space 字符将不再划分标记。
事实上,您的第一次试验可以修改以证明白色 space 字符不再是分隔符...
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();
}
新行字符将被视为第四个标记的一部分。
Scanner 等待您输入另一个 ',',所以当您输入 ',' 之后它会在 1fish2
后立即打印鱼。
所以通过 1,fish,2,fish,
而不是 1,fish,2,fish
我检查了第一个片段;它正在正确打印 -
1fish
2fish
Link - http://code.geeksforgeeks.org/jK1Mlu
如果您的期望有所不同,请告诉我们。