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

Java-赋值的左侧必须是变量

解宏扬
2023-03-14

作为我的第一个Java项目,我正在尝试制作一个定位不同城市的小程序。

我想从“City”类访问我的类“GPS”的变量,但我一直遇到这样的错误:作业的左侧必须是变量。任何人都可以向我解释我在这里做错了什么,以及今后如何避免这种错误?

public class Gps {
  private int x;
  private int y;
  private int z;

   public int getX() {
    return this.x; 
   }

   public int getY() {
    return this.y; 
   }

   public int getZ() {
    return this.z; 
   }
}

(我想把变量作为私有)

这个类“City”应该有坐标:

class City {
  Gps where;

   Location(int x, int y, int z) {
     where.getX() = x;
     where.getY() = y;    //The Error Here
     where.getZ() = z;
   }
}

共有2个答案

宇文念
2023-03-14

不要用getter设置属性。应该这样做:

public class Gps {
    private int x;
    private int y;
    private int z;

    public int getX() {
        return this.x; 
    }

    public int getY() {
        return this.y; 
    }

    public int getZ() {
        return this.z; 
    }

    public void setX(int x) {
        this.x = x;
    }

    public void setY(int y) {
        this.y = y;
    }

    public void setZ(int z) {
        this.z = z;
    }
}


class City {
    Gps where;

    City(int x, int y, int z) {
       this.where = new Gps();
       where.setX(x);
       where.setY(y);
       where.setZ(z);
    }
}
广绪
2023-03-14

错误本身就说明了这一点:不能为非字段或变量的对象赋值。getter用于获取存储在类中的值。Java使用setter来处理值的存储:

public int getX() {
    return x; 
}
public void setX(int x) {
    this.x = x;
}

现在可以通过调用setter设置值:

City(int x, int y, int z) {
    where.setX(x);
    ...
}

然而,这种解决方案并不理想,因为它使Gps变得可变。您可以通过添加构造函数来保持它不可变:

public Gps(int x, int y, int z) {
    this.x = x;
    this.y = y;
    this.z = z;
}

现在City可以设置其中在一个镜头中:

City(int x, int y, int z) {
    where = new Gps(x, y, z);
}
 类似资料:
  • 我在想为什么会这样。我的其他项目工作完美,但这一个不行。

  • 问题内容: 为什么不起作用? 无法理解为什么作业的左侧不是变量。 有人帮忙吗? 问题答案: 如果您只想增加5,而又不限于此,则可以避免冗长,而可以这样做: 这将in- in 的值原地增加5。

  • 问题内容: state.charAt(i)部分在标题中指出了问题。如果我的方法不是完全错误的,该如何解决该问题。 问题答案: 之所以不起作用,是因为它是类的方法-即它是一个函数,并且您无法在Java中为函数赋值。 如果您想逐个字符地遍历一个字符串,我可能会这样做: 然后改为对GuessAsChar进行操作。根据您的需要,可能有更好的方法(如更整洁的方法)来搜索字符串中的字符对等。

  • 问题内容: 这个问题源于-其他解包概述,据我所知,它存在于Python 3.5中(并且没有反向移植到)。具体来说,在“ 缺点 ”部分中,注意以下几点: 虽然原因是一, ,原因是一个。这样做的原因可能会使不熟悉该结构的人感到困惑。 对于第一种情况,确实确实存在: 在第二种情况下,创建了: 不熟悉这个概念,我很困惑。谁能解释这种行为?加星标的表情是否会根据其所在的侧面而有所不同? 问题答案: 当还考虑

  • 我开始盲目地看着我的代码,我的大脑快要过热了。谈到编程,我是新来的。 公共类回收系统{ }} 公共类瓶子{ } 公共类EmptyStackException扩展了异常{ } 公共类瓶计数{ } 我对getbottle、TotalBottalCount和BottalCount变量有单独的类。 我想做一个基于用户输入的回收系统模拟器,如果有任何意义的话,有三种不同类型的瓶子,它们被分配了不同的值,一个

  • 问题内容: 这里发生了什么事? 它抛出一个错误,说 我正在做的是将值重新分配给一个已经声明的变量。 问题答案: 将新值分配给现有变量时,请从第二条语句中删除。 当您像在第一个语句中那样第一次执行简短声明和赋值时使用。