java - 将扫描仪对象传递给方法

标签 java java.util.scanner

如果我将扫描仪对象传递给方法,扫描仪将从输入的开头扫描还是继续扫描输入的剩余部分。这是我的代码:

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/

相关文章:

java.util.Scanner 没有读取我在桌面上的文件

java - 每次从键盘(java)输入新数字时,如何将数字存储到数组中?

java - 未报告的异常 java.io.FileNotFoundException;?

java - 从文件中输入的数组不正确

java scanner hasnext(pattern) 与空格冲突

Java问题数据库语法错误在 ":"或附近

java - 如何使用 fireauth 确认登录以确认密码是否正确

java - OOP 设计 : How to decide program flow and class responsible for method (JSFML library)

Java 7,try 和 catch 问题? Ubuntu Eclipse IDE

java - 如何检查主教的空对角线?