gpt4 book ai didi

Java:参数值不变

转载 作者:行者123 更新时间:2023-12-02 01:55:36 25 4
gpt4 key购买 nike

我刚刚开始接触 Java,为了学习它,我尝试用 BlueJ 编写电子宠物蛋程序。这是代码摘录:

public class Tamagotchi
{
private int hunger;
private int mood;
private int fatigue;
private int hBorder;
private int mBorder;
private int fBorder;
private String generalCondition;

public Tamagotchi(int hungerBorder, int moodBorder, int fatigueBorder)
{
// Instanzvariable initialisieren
hunger = 0;
mood = 0;
fatigue = 0;
hBorder = hungerBorder;
mBorder = moodBorder;
fBorder = fatigueBorder;
generalCondition = "indifferent";
}

public void setGeneralCondition(){
if (fatigue > fBorder){
generalCondition = "tired";
}
if ((fatigue < fBorder) & (hunger > hBorder)){
generalCondition = "hungry";
}
if ((mood > mBorder) & (hunger < hBorder) &
(fatigue < fBorder)){
generalCondition = "happy";
}
else {
generalCondition = "indifferent";
}
}

public void play()
{
if (hunger > hBorder){hunger += 2; mood += 2; fatigue += 3;
}
else {}
setGeneralCondition();
}

public void eat(){
if (fatigue > fBorder){hunger -= 2; fatigue += 2;
}
else{}
setGeneralCondition();
}

public void sleep(){
if (hunger > hBorder){hunger += 1; mood -= 1; fatigue = 0;
}
else{hunger += 1; mood += 1; fatigue = 0;
}
setGeneralCondition();
}

public void pet(){
hunger += 1;
mood += 2;
setGeneralCondition();
}

public String getGentralCondition(){
return generalCondition;
}

public void makeHappy(){
eat();
sleep();
}
}

我的问题是,当我使用任何方法时,generalCondition 都没有改变。我认为 setGeneralCondition 方法的某些内容是错误的,但我不知道问题出在哪里。有人可以帮忙吗:/?

提前谢谢。编辑:我现在发布了漏洞代码。正如我在评论中所说:每当我使用 eat()、play() 这样的方法时,我都希望 generalCondition 发生变化...setGeneralCondition 方法应该检查饥饿情绪或疲劳值之一是否超过特定边界并更改条件(疲倦、饥饿或快乐)。但每当我使用其他方法之一时,generalCondition 都不会改变。

最佳答案

编辑:我对您的代码进行了进一步编辑,并提出了一个运行您的代码并更改一般条件的小主程序!检查一下并运行一下看看。

我的直觉告诉我,这个类 Tamagotchi 是一个类文件或一个对象 Tamagotchi,它将由位于另一个文件中某处的 main 方法使用。如果是这种情况,我相信这是一个简单的修复,您需要做的就是在很多地方添加 this. 。我已经在下面为您完成了这项工作。试试这个,让我知道这是否有效!

public class Tamagotchi{
private int hunger;
private int mood;
private int fatigue;
private int hungerBorder;
private int moodBorder;
private int fatigueBorder;
private String generalCondition;

public Tamagotchi(int hungerBorder, int moodBorder, int fatigueBorder)
{
// Instanzvariable initialisieren
this.hunger = 30;
this.mood = 30;
this.fatigue = 30;
this.hungerBorder = hungerBorder;
this.moodBorder = moodBorder;
this.fatigueBorder = fatigueBorder;
this.generalCondition = "indifferent";
}

public void setGeneralCondition(){
if (fatigue > fatigueBorder){
this.generalCondition = "tired";
return;
}
if ((fatigue < fatigueBorder) && (hunger > hungerBorder)){
this.generalCondition = "hungry";
return;
}
if ((mood > moodBorder) && (hunger < hungerBorder) && (fatigue < fatigueBorder)){
this.generalCondition = "happy";
return;
} else {
this.generalCondition = "indifferent";
}
}

public String getGeneralCondition(){
return generalCondition;
}

public void play()
{
if (!generalCondition.equalsIgnoreCase("hungry")){
hunger += 2; mood += 2; fatigue += 3;
} else {
}
setGeneralCondition();
}

public void eat(){
if (fatigue > fatigueBorder){
hunger -= 2; fatigue += 2;
} else{
}
setGeneralCondition();
}

public void sleep(){
if (hunger > hungerBorder){
hunger += 1; mood -= 1; fatigue = 0;
} else{
hunger += 1; mood += 1; fatigue = 0;
}
setGeneralCondition();
}

public void pet(){
hunger += 1;
mood += 2;
setGeneralCondition();
}

public void makeHappy(){
eat();
sleep();
}
}

这是我为测试上面的代码而编写的一个主要方法。

public class Test {
public static void main(String[] args) {
Tamagotchi test = new Tamagotchi(10, 10, 10);
test.play();
test.makeHappy();

System.out.println(test.getGeneralCondition());
}
}

输出:

hungry

希望这有帮助!

附注这是基本编码风格的链接。练习使用这些样式进行编码,因为它使您的代码更易于其他人和您自己阅读,它看起来更干净,并且更容易查看和修复错误! Coding Style Guide

关于Java:参数值不变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57400192/

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