如果我将扫描仪对象传递给方法,扫描仪将从输入的开头扫描还是继续扫描输入的剩余部分。这是我的代码:
public class Test {
public void test(Scanner sc) {
System.out.println(sc.nextLine());
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String str = sc.nextLine();
System.out.println(str);
Test t = new Test(sc);
t.test();
}
}
// here is the input file:
1 2 3 4
5 6 7 8
9 1 2 3
我在 Windows 和 Linux 上测试了这段代码,但得到了两个不同的结果
第一个结果是在方法测试中,它打印 5 6 7 8
第二个结果很难理解,它打印了 1 2 3 4,仍然是输入的第一行。
这是否与Java版本不同有关,有人可以帮我解释一下吗,谢谢!
最佳答案
两种方法中的扫描仪都是同一个对象 - 您传递的是对同一扫描仪的引用。因此,它不知道它是从程序中的新位置使用的 - 如果调用相同的方法,无论什么代码使用它,它都会忠实地执行相同的操作。
关于java - 将扫描仪对象传递给方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15961418/