我需要帮助才能回来

时间:2013-12-06 16:37:56

标签: java return return-value

我正在制作我的第一个GUI程序,并遇到一个小问题。我需要返回String值,所以我可以在方法“说”中使用它。这部分是一个子类 - 一个在另一个类中构建的类。 错误返回值; gets is:void方法无法返回值。我知道我必须替换虚空,但是用什么?关于奥利弗

private class Eventhandler implements ActionListener{
    double amount;


    public void actionPerformed(ActionEvent event){

        String string = "";
        String string1 = "";

        if(event.getSource()==item1)
            string=String.format(event.getActionCommand());
        else if(event.getSource()==item2)
        string1=String.format(event.getActionCommand());

        JOptionPane.showMessageDialog(null, string);

        double fn = Double.parseDouble(string);
        double sn = Double.parseDouble(string1);
        double amount = fn + sn;

        String value = Double.toString(amount);

        return value;


    }

}
public void saying(){
    System.out.println(value);
}

}

3 个答案:

答案 0 :(得分:5)

正如其他人所说,你不能从actionPerformed返回任何内容,因为它是在ActionListener界面中指定的。即使你可以,它对你没有任何好处,因为你不是那个调用actionPerformed函数的人。

您想要做的是以某种方式给予父类value。一种方法是让value成为父类的字段。然后您可以从actionPerformed函数设置它:

private class ParentClass {
    private String value;

    //... stuff ...

    private class Eventhandler implements ActionListener{
        double amount;

        public void actionPerformed(ActionEvent event){
            //... stuff ...

            ParentClass.this.value = Double.toString(amount);
        }
    }

    public void saying(){
        System.out.println(value);
    }
}

请注意,您无法在内部类中执行this.value = value,因为该函数中的this引用了Eventhandler实例。您必须使用ParentClass.this语法来获取父类的this。将ParentClass替换为父类的实际名称。

更好的方法可能是在父类上使用setValue()函数,内部Eventhandler类调用该函数。这取决于你想做什么。

答案 1 :(得分:0)

您可以创建一个实例变量,但无法在actionPerformed方法中对其进行初始化,如下所示

private class Eventhandler implements ActionListener{
String value=''


   public void actionPerformed(ActionEvent event){
      value="newvalue";
      // rest code goes here
   }
}

你不能改变api定义方法的返回类型

答案 2 :(得分:0)

除非您需要程序中其他位置的String值:

替换

public void saying(){
   System.out.println(value);
}

public void saying(String value){
    System.out.println(value);
}

然后改变

return value;

saying(value);