多个扫描仪类

时间:2015-11-27 19:25:37

标签: java java.util.scanner

我最近出现了招聘测试,编码问题相当简单,所以我可以很容易地解决问题,我面临的唯一问题是获得输入。在问题中,主要功能被定义,它只用一个参数调用另一个函数,即no。测试用例。我认为这很公平,因为我可以简单地放一个while循环来完成我的工作。但我无法得到输入。我遇到错误,说明没有输入扫描类。 Ideone是否给出了运行时错误?任何人都能说出确切的问题吗?

  

http://ideone.com/v6wfao

import java.util.*;
import java.lang.*;
import java.io.*;

/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
    public static void main (String[] args) throws java.lang.Exception
    {
    Scanner sc=new Scanner(System.in);
    int x=sc.nextInt();
    System.out.println(x);
    callit();
    }
    public static void callit()
    {

        Scanner sc=new Scanner(System.in);
        int u=sc.nextInt();
        System.out.println(u);
    }
}

1 个答案:

答案 0 :(得分:0)

我有一个理论,但我不完全确定......

ui-view类使用Scanner,其中数据在每次换行后重定向到那里。这就是为什么在使用InputStream时,您可以在同一行上键入3个数字,在您单击 Enter 之前不会处理任何内容。

这样想:

Scanner

扫描仪现在将从标准输入中获取任何输入,并将其放入该扫描仪独有的缓冲区中。

因此,如果您输入:

Scanner sc = new Scanner(System.in);

然后这两个数字都会出现在2 3 对象中,即使您只调用sc一次。

对于解决方案,我看到一个:

使sc.nextInt()成为静态变量。像这样:

Scanner

这将使标准输入提供的任何输入保持为一个对象,这也更容易管理。因此,我已经将其创建为源自您的代码的工作示例:

class IDEOne 
{
    static Scanner sc;

    public static void main(String[] args) // Yada yada...