此语句可以在Java中使用吗?
int a = new Scanner(System.in).nextInt();
如果可以的话,有人可以向我解释吗?
答案 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());