【发布时间】:2013-02-23 11:34:45
【问题描述】:
我正在使用模拟器玩掷骰子,我试图从同一个方法返回两个值(或者更确切地说,我愿意)。
当我写我的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();
它被赋予与游戏状态相同的值...一个 0 或一个 1(赢或输)。 有什么方法可以访问第二个返回值?还是有完全不同的方法?
【问题讨论】:
-
使用对象数组或哈希图或模型类
-
不,不是。您可以返回一个对象,并且该对象可以包含多个属性
-
你应该返回一个 int[]。结帐docs.oracle.com/javase/tutorial/java/nutsandbolts/arrays.html
-
@sissonb 所以我会返回一个数组并将索引 1 指定为 gameStatus 并将第二个索引指定为卷数?然后将其返回到现有数组?然后我可以在哪里访问它?
-
@OscarWilde 是的,但请记住数组的索引从 0 开始。您的方法也需要更改为
public static int[] crapsGame。这是一种返回值的快速而肮脏的方法。如果这将变成一个大型项目,那么最好返回一个像@rgettman 所说的对象,但需要创建类的开销并使用更多内存。