我们可以在Java中使用Scanner(System.in).nextInt()吗?

时间:2018-08-06 03:13:00

标签: java java.util.scanner

此语句可以在Java中使用吗?

int  a = new Scanner(System.in).nextInt();

如果可以的话,有人可以向我解释吗?

6 个答案:

答案 0 :(得分:6)

您也可以通过这种方式来执行此操作,但是您没有将Scanner对象分配给任何引用变量。因此,如果您想再次读取任何输入,则需要创建另一个Scanner对象。

int a = new Scanner(System.in).nextInt();

最好的方法是创建一个Scanner对象并将其存储在引用变量中。

Scanner sc = new Scanner(System.in);

答案 1 :(得分:2)

Scanner是一个类,而nextInt()不是静态方法 因此,必须使用new关键字制作Scanner对象,然后才能使用该方法

答案 2 :(得分:1)

是的,以下代码将起作用:

System.out.println("Enter a number: ");
int k = new Scanner(System.in).nextInt();
System.out.println(k);

为什么?您正在声明一个int(k)。您正在设置它的值等于我们正在创建的Scanner对象的新实例,该实例将存储我们选择输入的int原语。所以类型是兼容的。如果您尝试使用用于字符串的Scanner.next()方法或Scanner.nextFloat()方法,则它们将不兼容。由于我们将存储一个整数,因此此语句没有编译错误。

但是仅仅因为您可以用Java做某事并不意味着您应该这样做。更好的做法是先创建一个Scanner对象,然后创建int变量:

System.out.println("Enter a number: ");
Scanner reader = new Scanner(System.in);
int k = reader.nextInt();

答案 3 :(得分:0)

这句话是不对的。您必须使用Scanner运算符来创建类new的对象,如下所示。

Scanner sc = new Scanner(System.in);
int val = sc.nextInt();

答案 4 :(得分:0)

您的陈述不正确。它必须是以下内容:

def on_post(self, req, resp):
    data = urlparse.parse_qs(req.stream.read())
    x = data['x'][0]
    y = data['y'][0]
    z = data['z'][0]
    resp.stream = main(x,y,z)

仅当您不打算再次使用int value = new Scanner(System.in).nextInt(); 对象时,才执行此操作。

答案 5 :(得分:0)

是的,可以使用。

将其分配给Scanner对象并调用函数是常见的选择,而且还提高了可读性。

当您要多次使用它时,将其分配给Scanner对象很重要。

示例:

Scanner sc = new Scanner(System.in);

int sum = 0, count = 0;

while (sc.hasNextInt())
{
    int num = sc.nextInt();
    sum += num;
    count++;
}

在这里,您多次使用同一对象。

但是,如果您要做这样的事情,

Scanner sc = new Scanner(System.in);

int num = sc.nextInt();

System.out.println("num " + num);

在这里,您仅使用该对象一次。

将其分配给对象并调用函数并不是很重要。您可以简单地做到这一点

System.out.println("num" + new Scanner(System.in).nextInt());