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,很难在任何地方找到答案。
答案 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返回给调用者方法并获取值?