当前位置: 首页 > 知识库问答 >
问题:

二进制运算符“*”的操作数类型不正确如何将该类型转换为int

赫连飞沉
2023-03-14

我在下面的程序上遇到了一些问题。

    public static void main(String[] args) {

    Int x =new Int(3);
    int y= square() +twice() +once();
    System.out.println(y);
}

private int square (Int x)
{
    x= x*x;
    return x;
}

private int twice (Int x)
{
    x= 2*x;
    return x;
}

private int once (Int x)
{
    x= x;
    return x;
}

这个程序的输出应该是45。

下面是Int类。

public class Int {
private int x;
public Int (int x)
{
    this.x=x;
}
  private int square (Int x)
  {
      x= x*x;
      return x;
  }

共有1个答案

郑晨
2023-03-14

问题很简单:您定义了一个int类型,并希望它可以隐式地转换为一个基元int,但这与您的int类型在您的设计中的期望无关,它可以被称为foo而不是int,但这是一样的。

如果您希望能够获得包装在int实例中的int值,那么您必须提供自己的实现方法,例如:

class Int {
  int x;

  public int intValue() { return x; }
}

以便您可以执行以下操作:

Int x = new Int(3);
int square = x.intValue() * x.intValue();
class Int
{
  int x;

  public Int(int x) { this.x = x; }

  public Int square() { return new Int(x*x); }
  /* or: int square() { return x*x; }*/
}
 类似资料: