【问题标题】:Performing a method on an int [closed]在 int 上执行方法 [关闭]
【发布时间】:2013-04-03 23:25:15
【问题描述】:

我正在尝试通过一种方法为 int 生成一个随机数。我知道这是无法做到的,因为 int 是原始类型,并且我得到一个 int cannot be deferenced 错误。周围有没有我仍然可以使用该方法来获取 int 值的地方?


public int move()
 {
     Random random = new Random();
     int generatedNum = random.nextInt(7 - 1) + 1;

     return generatedNum;
 }

public static void main(String[] args)
{
    int player1 = 0;
    int player2 = 0;

    player1 = player1.move();
    player2 = player2.move();

}

【问题讨论】:

  • 对不起,没有得到你的问题。

标签: java methods compiler-errors int


【解决方案1】:

你想做什么? 这会起作用,但不知道它是否是你想要的......

// made this static so you don't need a class reference
public static int move()
 {
     Random random = new Random();
     int generatedNum = random.nextInt(7 - 1) + 1;

     return generatedNum;
 }

public static void main(String[] args)
{
    int player1 = 0;
    int player2 = 0;

    // Now we just call the static method move to set the ints.
    player1 = move();
    player2 = move();

}

【讨论】:

    【解决方案2】:

    int 是原始类型,而 Integer 是最终类型,所以不,您将永远无法编写 5.move()。 您可以编写一个只包装整数的类,但不能用它进行算术运算。

    也许Iterator<Integer> 是一个值得实现的接口。

    【讨论】:

      【解决方案3】:

      您可以创建自己的类,类似于 Integer 类(不幸的是 final 或者您可以对其进行子类化)。然后将您想要的任何方法添加到该类。想取值的时候用起来有点不方便,但又不会太乱。

      【讨论】:

      • 幸运的是,这是最终的,因此强制执行不变性。
      • @MouseEvent - 取决于你如何看待它。还有其他方法可以解决这个问题。
      最近更新 更多