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