是否可以从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]