【问题标题】:Is there a way on getting Scanner input without having to create an instance of the class? [closed]有没有办法在不必创建类的实例的情况下获取扫描仪输入? [关闭]
【发布时间】:2015-11-24 22:27:22
【问题描述】:

假设我有这个代码:

Scanner scan=new Scanner(System.in);
char x = 'h', aux;
System.out.println("Insert a single letter");
aux=scan.nextLine().charAt(0);
if (x==aux)System.out.println("match");

有没有办法避免

Scanner scannerobject = new Scanner();

并使用 C 的 scanf() 或 fget() 之类的函数工具完成工作? 我只是对此感到困惑!

【问题讨论】:

  • 这是一个“猜测 Java 开发人员在想什么”或“让我们讨论一下他们在想什么”类型的问题,因此存在被关闭的风险,因为它与本网站无关。跨度>
  • 你不需要扫描程序类来获取标准。System.in 会做到这一点,就像 scanf。 Scanner 的存在是因为它包含了许多您可能希望在输入中使用 std 做的事情。
  • 想一想,如果您有一个 Scanner 用于键盘输入,另一个 Scanner 用于读取文件,那么 Scanner 的静态方法会变得多么有用。
  • 静态方法的实现不能轻易地用多态性替代;需要scanf 来执行其他操作吗?太糟糕了。
  • @PabloGomez 你真的能回答一个关于你为什么在 20 年前做某事的任意问题吗?

标签: java java.util.scanner inputstream


【解决方案1】:

据我所知,您可以使用 Scanner 对象从控制台或文件获取输入,但可能还有更多来源。如果您的方法/类一个接一个地重复执行,那么使用单独的对象来执行此操作会很有用。否则每次您想要获得输入时都必须完成所有配置;

【讨论】:

    【解决方案2】:

    您不必使用扫描器来获取 Java 输入。 Scanner 只是一个高级类,用于在读取输入时解析输入。您可以从静态 InputSteam System.in 中读取。您可能希望使用 BufferedReader 将其包装起来,因为您可能希望处理字符串而不是字节数组。

    例如

    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    String line = br.readLine();
    

    【讨论】:

      猜你喜欢
      • 2015-07-19
      • 1970-01-01
      • 1970-01-01
      • 2013-03-26
      • 1970-01-01
      • 2011-06-16
      • 2011-04-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多