Java说有一个"无法解决符号"下面的代码出错,我无法找到它

时间:2018-03-21 02:07:03

标签: java

Java说下面的代码有错误,我找不到它。我已经指出了2个问题行,并在正确的行上方添加了注释"问题行"并且我已经指出了与这个问题紧密相关的方法,并且与#34;密切相关的"在它上面发表评论。错误读取"它无法解析处理的符号"我不知道为什么不是因为我事实上已经定义了变量(我已经标记了问题第1行)。当我注意到它发出一个警告,表明处理过的变量从未被使用时,它真的让我感到沮丧。在我定义它的地方,即使它告诉我它不知道它来自我尝试使用它的地方。 p.s.,我确实导入了一个Scanner,我只是在stackoverflow上传代码时切掉了那个部分。

public class sub {
    String NameNum;
    int FirstNum, SecondNum, ThirdNum;

    public sub(){
        Scanner input = new Scanner(System.in);
        System.out.println("Enter List Name");
        NameNum = input.next();
        System.out.println("Enter number");
        FirstNum = input.nextInt();
        System.out.println("Enter number");
        SecondNum = input.nextInt();
        System.out.println("Enter number");
        ThirdNum = input.nextInt();

       // Problem Line 1 of 2 below
       int[] processed = process(FirstNum, SecondNum, ThirdNum);

    }
    public void print(){

        System.out.println(NameNum + ":  " + FirstNum + "  " + SecondNum + "  " 
                           + ThirdNum);

    }

        //Closely related to Problem lines (method below, 3 lines in all) 
        int[] process(int FirstNum, int SecondNum, int ThirdNum) {

        int []  processed  = {FirstNum, SecondNum * 2, ThirdNum * 3};

        return processed;

    }
    public void printProcessed(){

         //Problem line 2 of 2 below
         System.out.println(NameNum + " Processed: " + processed[0] +                          
                            processed[1] + processed[2]);
    }


}

2 个答案:

答案 0 :(得分:1)

在方法中声明变量时,它被称为 local 变量。局部变量只能从它们声明的方法中访问。

要编译代码,请在构造函数之外移动processed的声明(但将其保留在类中)。然后我们将其称为字段

答案 1 :(得分:1)

首先,为了便于阅读,请将代码保留在同一缩进处。我正在引用你的方法int[] process(int FirstNum, int SecondNum, int ThirdNum),它有一个额外的缩进,乍一看它使它看起来像是属于它上面的方法。

和O.O.上面提到的平衡你的printProcessed()方法引用了一个不存在作为类成员的变量。

在你的构造函数中你有一个变量int []processed,我认为你想要它作为一个类成员变量。因此,在构造函数之外声明该变量,它应该可以工作。