Java 带整数输入的扫描仪出错

Java 带整数输入的扫描仪出错,java,Java,sc.nextInt();给出sc的错误。我只是试图通过分配函数并调用它们来计算x和y的和。这只是一项我必须完成的任务,但不幸的是我问了助教,但他不知道如何解决 import java.util.Scanner; public class calculator { int x; int y; public void setnumber (){ System.out.println("Please Enter X"); x = sc.nextInt (); System

sc.nextInt();给出sc的错误。我只是试图通过分配函数并调用它们来计算x和y的和。这只是一项我必须完成的任务,但不幸的是我问了助教,但他不知道如何解决

import java.util.Scanner;
public class calculator {

int x;
int y;

public void setnumber (){
    System.out.println("Please Enter X");
    x = sc.nextInt ();
    System.out.println("Please Enter Y");
    y = sc.nextInt ();
}

public void sum (){
    int sum = x + y;
    System.out.println ("The Sum" + sum);
}

public static void main(String[] args) {

    Scanner sc = new Scanner (System.in);
    calculator sx = new calculator ();
    sx.setnumber ();
    sx.sum();
}
}

将扫描仪声明移动到setnumber方法:

import java.util.Scanner;
public class calculator {

int x;
int y;

public void setnumber (){
    Scanner sc = new Scanner (System.in);
    System.out.println("Please Enter X");
    x = sc.nextInt ();
    System.out.println("Please Enter Y");
    y = sc.nextInt ();
}

public void sum (){
    int sum = x + y;
    System.out.println ("The Sum" + sum);
}

public static void main(String[] args) {

    calculator sx = new calculator ();
    sx.setnumber ();
    sx.sum();
}
}

将Scanner sc从main方法中去掉,在类级别定义它。

您应该了解范围。
扫描器对象在主方法外不可见

出现了什么错误?您需要将扫描器对象的引用传递给set number方法。
public void set number(scanner sc)
“我询问了我的TA,但他不知道如何解决此问题”Yikes.要么在setnumber函数中创建
扫描仪
对象,要么使
sc
全局“它只是说构建成功”,这应该是不可能的,因为您的代码中存在编译错误。谢谢,这确实解决了问题。您介意解释一下为什么会修复它吗?它修复了它,因为Scanner对象的可见性仅限于声明它的方法。在您的代码中,扫描器对象在主方法中是“隐藏”的。我将其移动到引用它的方法。打开扫描仪处理系统.in方法可能会导致一些问题。因为我们应该确保关闭资源,这意味着我们应该在某个时候关闭扫描仪,这也意味着关闭System.in。如果我们只想使用此方法一次,而不想再次从System.in读取,则可以,但如果不是这样,则通常最好为System.in创建一个扫描程序,并将其作为参数传递给方法。然后我们可以在main方法的末尾,在退出之前关闭这个扫描器。范围应该是有限的。如果对象仅在一个方法中使用,则应在该方法中声明。