gpt4 book ai didi

java - 使用 Setter 和 Getter 操作变量

转载 作者:行者123 更新时间:2023-12-01 22:06:43 24 4
gpt4 key购买 nike

我在另一个网站上看到了这个代码示例。我已经研究了一段时间,试图找出一些简单的东西,但我很难确定从哪里开始。我如何允许用户进入控制台来打开/关闭灯或风扇?所有这些与 setter/getter 相关的东西都很令人困惑。编写打开/关闭某些东西的逻辑似乎很简单,但是将其与构造函数和 setter / getter 混合在一起,我就会迷失方向。我无法理解如何以及在哪里使用用户输入操作 isOn boolean 值。

如果有任何指导或代码,我将不胜感激。谢谢

public class Household {

public String choice;//instance variables
public boolean isOn;

//constructor
Household(String choice,boolean isOn) {
this.isOn=isOn;
this.choice=choice;
}

//methods
public String getChoice() {
return choice;
}

public void setChoice(String choice) {
this.choice = choice;
}

public boolean isOn() {
return isOn;
}

public void setOn(boolean isOn) {
this.isOn = isOn;
}

public String toString() {
return "Choice:" + getChoice() + "\tisOn:" + (isOn() ? "Yes" : "NO");
}

public static void main(String[] args) {

Household hh=new Household("toaster", true);
System.out.println(hh);
hh=new Household("fan", false);
System.out.println(hh);
}
}

最佳答案

您可以将构造函数视为蓝图。

no在上图中,我们的类位于虚线框中。这就是“蓝图”。它还不是一个实际的对象,它只是代表了对象应该是什么样子。实心盒子里是一个实际的物体。

构造函数获取蓝图并实际从中构建一些东西。

   Household(String choice,boolean isOn) {
this.isOn=isOn;
this.choice=choice;
}

在这里,我们正在定义该蓝图的工作方式。为了构建一个家居对象,我们需要为其提供一个字符串“choice”和一个 boolean 值“isOn”。一旦我们有了这两件事,我们就可以创建一个 Household 对象。

现在,在房子建成之前你无法打开房子里的灯。一旦您有了 Household 对象,您还将拥有您的 choice 和 isOn 字段。假设我想关掉家里的所有东西。 enter image description here

使用您的代码,我们有一个名为 hh 的家庭、一台 toastr 和一个开关。如果您想关闭开关,您可以使用setter:

    public void setOn(boolean isOn) {
this.isOn = isOn;
}

然后,setter 设置 hh 对象的 isOn 字段的值,如上图所示。

如果您想知道该开关是真还是假(打开或关闭),您会问:

hh.getOn();

这会返回一个 boolean 值,与对象上的 isOn 字段的值相同。

当你打电话时你可以看到这个

System.out.println(hh.getOn());

这会打印出 true 或 false,具体取决于它是否设置为 true 或 false。

这就是 setter 和 getter 的工作方式:setter 设置该字段的值,getter 获取该字段的值。

<小时/>

现在是(更多)有趣的部分。

由于您想要输入数据,而不是简单地输出数据,因此我们必须做一些不同的事情。

假设我想让用户在控制台中输入“off”并将家庭开关设置为关闭。

System.out.println(hh); <-- only prints out to console

我们需要一个新对象来处理输入。扫描仪通常用于初学者教学,因此我们将使用它。

Scanner s = new Scanner(System.in);

这从系统的输入流中读取数据。您可以阅读 Scanner here.

现在,扫描仪使用 nextLine() 以字符串形式读取数据;所以我们会用它。

String test = s.nextLine();

当然,现在我们需要测试该字符串是否与“off”相同,如果是,则将 isOn 字段设置为 false(关闭)。

if(test.equals("off") || test.equals("OFF")){
hh.setOn(false);
}

我不会详细介绍如何执行其余操作,例如检查输入、循环等。

逻辑应该位于此应用程序的主方法中。无论您需要修改家庭对象,都需要调用这些 setter/getter 方法。仅当您需要一个全新的对象时才会调用构造函数。如果这仍然令人困惑,请将构造函数与设置垄断游戏进行比较。你最初设置了垄断板,给每个人他们的钱和起始属性(property)等。这一切都是为了你可以真正玩游戏。当您在游戏中丢失某个属性时,您可以使用 setter 来删除该属性。当你需要查看多少钱时,你会使用 getter。

MonopolyPlayer{
int cash;
MonopolyPlayer(){
cash = 1500;
//we're setting this player up to play the game
}


setCash(int i); //now the player has a new amount of cash
getCash(); // he's checking his account
....etc.
}

等等。

关于java - 使用 Setter 和 Getter 操作变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32613707/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com