【问题标题】:Int cannot be deferenced errorInt 不能被取消引用错误
【发布时间】:2023-03-31 00:39:01
【问题描述】:

我正在尝试从一种方法获取用户输入并在另一种方法中使用它。我对这个错误感到困惑,因为它们都是 int 类型。


public static void move()
{
    System.out.println("What do you want to do?");
    Scanner scan = new Scanner(System.in);
    int userMove = scan.nextInt();
}

public static void usersMove(String playerName, int gesture)
{
    int userMove = userMove.move(); //error is here

    if (userMove == -1)
    {
        break;
    }

【问题讨论】:

  • move() 的返回类型为 void,设为 int 并返回值。
  • @Sudhanshu - 即使这样也是错误的。您不能在原始数据类型上调用方法。
  • 我假设 userMove 是一个对象,否则你是对的。可能是他把帖子里的名字弄乱了。
  • 其实OP想调用move()方法来获取userMove的值,也就是int。一定对如何调用该方法感到困惑,因此,错误。
  • 是的,即使 move() 也需要返回该值并将其返回类型更改为 int。

标签: java compiler-errors int dereference


【解决方案1】:
int userMove = userMove.menu();

userMove 这里是int(原始数据类型)。你怎么能调用一个方法呢?

我猜你想要这样的东西:-

public static int move()
{
    System.out.println("What do you want to do?");
    Scanner scan = new Scanner(System.in);
    int userMove = scan.nextInt();
    return userMove;
}

public static void usersMove(String playerName, int gesture)
{
    int userMove = move(); //Now error will go.

    if (userMove == -1)
    {
        break;
    }

【讨论】:

  • 我现在得到一个不兼容的类型区域。这是因为我的退货声明吗? int userMove = menu(); ^ 必需:int 找到:void
  • 您的menu() 方法也应该返回int,因为它的返回值分配给userMove
  • 看我的回答。我已经更改了move() 方法的返回值。也做出改变。
  • 听起来像是一个新的、与“int cannot be dereferenced”不同的问题,不是吗?最佳accept 答案并提出新问题(当然是在搜索之后)。
【解决方案2】:

只是猜测,因为不清楚 userMove 是什么......但您似乎使用了调用者中另一个方法的变量。你需要把它退回来这样做

public static int move()
{
   System.out.println("What do you want to do?");
   Scanner scan = new Scanner(System.in);
   return scan.nextInt();
}

public static void usersMove(String playerName, int gesture)
{
   int userMove = move(); //error is here

   if (userMove == -1)
   {
       break;
   }

【讨论】:

    猜你喜欢
    • 2015-11-22
    • 1970-01-01
    • 1970-01-01
    • 2015-05-21
    • 2018-03-26
    • 2020-06-08
    • 2013-10-07
    相关资源
    最近更新 更多