在方法中使用多个return语句

时间:2012-09-19 18:38:54

标签: java set return pojo

import javax.swing.JOptionPane;

public class Speler
{

    public String naam;
    public String aantalKeerGespeeld;
    public String behaaldePunten;
    public String spelersInfo;


    public String setNaam(){
        return naam = JOptionPane.showInputDialog("Hoe heet je?");
    }

    public String setAantalKeerGespeeld(){
        return aantalKeerGespeeld = JOptionPane.showInputDialog("Hoe vaak heb je gespeeld?");
    }

    public String setBehaaldePunten(){
        return behaaldePunten = JOptionPane.showInputDialog("Hoe veel punten heb je behaald?");
    }

    public String setSpelersInfo(){
        **return naam = JOptionPane.showInputDialog("Hoe heet je?");
        return aantalKeerGespeeld = JOptionPane.showInputDialog("Hoe vaak heb je gespeeld?");
        return behaaldePunten = JOptionPane.showInputDialog("Hoe veel punten heb je behaald?");**


    }
    public String getNaam(){
        return naam;
    }

    public String getAantalKeerGespeeld(){
        return aantalKeerGespeeld;
    }

    public String getBehaaldePunten(){
        return behaaldePunten;
    }

    public String getSpelersinfo(){
        return naam;
        return aantalKeerGespeeld;
        return behaaldePunten;
    }
}    

看起来我无法返回或设置超过1个值。刚开始学习Java,很难在任何地方找到答案。

5 个答案:

答案 0 :(得分:3)

在仔细查看您的代码之后,我想澄清一些似乎有些误解的问题。首先,从我所看到的,您不需要从任何方法返回多个值。实际上,以“set”开头的方法名称不应返回任何内容。另一方面,它需要采用一个参数来“设置”变量的值。例如

public void setNaam(String newNaam){
    naam = newNaam;
}

请注意,我不使用JOptionPane对话框来获取名称。在代码的这一点上,我们并不关心价值来自何处。其他一些方法负责实际从用户获取值。此方法只存储该值以供以后使用。

另请注意,您有一个声明为

的字段
String spelersInfo;

我相信getSpelersInfo()setSpelersInfo()应该使用此功能,这就是为什么我声称您不需要从这些方法中返回多个值。

最后,您似乎正在创建我们称之为POJO的内容。有关首字母缩略词的含义的详细信息,请参阅此链接。

答案 1 :(得分:2)

return语句的基础是它使程序离开当前函数(子程序)并从函数调用的地方继续,即返回地址。
当您输入函数时,返回地址将保存在调用堆栈中,以便轻松访问。

对于您的代码,当您发出return语句然后发出另一个语句时,后者将不会被调用。
如果我没有弄错的话,它甚至不会编译在大多数编译器上     因此,您需要做的是发出一个返回所有String的返回语句 这可以通过Java标准库中提供的许多基本Data Structures来完成,如果您不想参与其中,您甚至可以将字符串附加到一个大字符串中,然后将其拆分。

但是现在我建议的是阅读一本基本的Java书籍/ tutorial,或者甚至是一本关于编程语言的基础书。
古德勒克!

Link to some basic Java Data structures

修改
正如Code-Guru指出并且是正确的,处理此问题的最佳方法是使用POJO,您可以在他的答案中看到一个很好的解释。

虽然在我看来阅读一本书并理解基本原理,但在这一点上胜过所有技术解决方案

答案 2 :(得分:1)

不,你不能以这种方式返回多个值。

return关键字的工作方式是它会立即将控制权返回给调用代码,使用返回的值作为函数的值。它看到的第一个返回调用将退出函数本身,因此任何后续代码都不会被执行。

通常,您不需要以这种方式从函数返回多个值。但是,如果要返回值列表,可以将它们打包到Container对象(例如java.util.Vector的对象)中并返回矢量对象。但是,在您列出的任何代码中似乎都没有必要。

但是,在您发布的代码中,似乎不是从函数返回值,而是希望通过JOptionPane提示设置类的实例变量。然后,只要完成所有这些分配,您就会在函数末尾只有一个return语句。请注意,如果您的函数声明为void(也就是说,它不返回值),那么最后一行就不需要return;行,因为它到达终点该方法,它将退出。有时return;很有用(例如,如果你有多个返回点),但这是另一个时间的研究课题。

答案 3 :(得分:0)

许多现代语言都具有返回多个值的优雅功能,但java却没有。实际上,你必须选择别的东西。从除了效率之外的所有事物的角度来看,100%可接受的解决方案是返回设计用于保存返回值集的新类的新对象。即;

class TwoStrings {String name; String addres; ......}

并在你的代码中返回(new TwoStrings(“foo”,“bar”));

另一个完全可以接受的选择是重构你的界面,这是很自然的 一次返回一个值。如果你想要“getXandY(),那么将它重构为getX()和getY()

经常选择的是使容器的返回值成为其中一个参数 被叫者。而不是返回“名称”和“地址”,为该功能提供“人” 它将加载名称和地址(并且可能返回成功指标)。

不太可接受的方法是使用非特定数组或向量来返回多个值

最不可接受的是返回一个值,并存储其他值以供其使用 来电者“按副作用返回”

答案 4 :(得分:-1)

是的,你是对的,你不能在一个方法中有多个return语句。如何将POJO返回给调用者方法并获取值?