是否可以从Java方法中返回多个值?
问题内容:
我正在使用模拟器玩掷骰子,并且试图从同一方法返回两个值(或者我想这样做)。
当我写我的return语句时,我只是尝试放入“&”,它可以编译并正常运行;但是我无法访问第二个返回值。
public static int crapsGame(){
int myPoint;
int gameStatus = rollagain;
int d1,d2;
int rolls=1;
d1 = rollDice();
d2 = rollDice();
switch ( d1+d2 ) {
case 7:
case 11:
gameStatus = win;
break;
case 2:
case 3:
case 12:
gameStatus = loss;
break;
default:
myPoint = d1+d2;
do {
d1=rollDice();
d2=rollDice();
rolls++;
if ( d1+d2 == myPoint )
gameStatus = win;
else if ( d1+d2 == 7 )
gameStatus = loss;
} while (gameStatus == rollagain);
} // end of switch
return gameStatus & rolls;
}
当我将值返回为:
gameStatus=crapsGame();
它适当地设置了赢或输的变量,但是如果我尝试执行以下语句中的简单操作:
rolls=crapsGame();
它被分配与gamestatus相同的值… 0或1(赢或输)。以任何方式可以访问第二个返回值?还是有完全不同的方法来解决?
问题答案:
创建自己的值持有者对象来保存两个值,然后将其返回。
return new ValueHolder(gameStatus, rolls);
可以返回具有多个值的数组,但这很神秘,对可读性没有任何作用。理解这意味着什么要容易得多…
valueHolder.getGameStatus()
比这意味着什么。
intArray[0]