gpt4 book ai didi

Java-循环内返回数据准确性的问题

转载 作者:行者123 更新时间:2023-12-01 18:33:39 24 4
gpt4 key购买 nike

我之前的问题已经得到解答。然而,我对从另一个类(class)提取的数据的准确性有疑问。我知道 currentScore.finalScore 仅在使用时更新。但是,我有 FinalScore = currentScore.finalScore。我的打印行显示它已更新,但通过看似随机的数字,即使该数字导致 while 语句变为 false,它也会无限地继续。

     public static void main(String[] args) {
Scanner keyboard = new Scanner (System.in);
String buddyName;
String userChoice;
int maxScore = 10;
int minScore = 0;

System.out.print("Nurse: The Patient's first name is ");
buddyName = keyboard.nextLine();

System.out.print("You: Let's see, I should (C)hange " + buddyName + "'s bandages," +
"(G)ive " + buddyName + " pain medication, " +
"(A)dd antibiotics to " + buddyName + "'s I.V," +
" or (D)ischarge " + buddyName + " ");

userChoice = keyboard.nextLine();

Buddy score = new Buddy(userChoice);
BuddyScore currentScore = new BuddyScore(score);

int finalScore;
do {
System.out.print("You: Let's see, I should (C)hange " + buddyName + "'s"
+ " bandages, (G)ive " + buddyName + " pain medication, " +
"(A)dd antibiotics to " + buddyName + "'s I.V," +
" or (D)ischarge " + buddyName + " ");

userChoice = keyboard.nextLine();
score.setUserChoice(userChoice);
finalScore = currentScore.getFinalScore();
System.out.println(currentScore.getFinalScore());
}while (currentScore.getFinalScore() < maxScore && currentScore.getFinalScore() >= minScore);

System.out.println("Curren score: " + currentScore.getFinalScore());




}

}

下面是我处理 FinalScore 的类,也是我怀疑的类。

public class BuddyScore {
private Buddy buddyScore;
public int finalScore;


public BuddyScore(Buddy buddyScore){
this.buddyScore = buddyScore;
this.finalScore = finalScore;
}

public void setFinalScore(int finalScore){
this.finalScore = finalScore;
}

public int getFinalScore(){
return finalScore += buddyScore.getBuddyScore();
}

}

下面是处理从 FinalScore 中提取的 buddyScore 的类。

public class Buddy {
private String userChoice;
public int buddyScore;


public Buddy(String userChoice){
this.userChoice = userChoice;
}


public void setUserChoice(String userChoice){
this.userChoice = userChoice;
}


public String getUserChoice(){
return userChoice;
}


public void setBuddyScore(int buddyScore){
this.buddyScore = buddyScore;
}



public int getBuddyScore(){

switch (userChoice){
case "C":
buddyScore = 1;
break;
case "G":
buddyScore = -2;
break;
case "A":
buddyScore = 3;
break;
case "D":
buddyScore = 7;
break;
default:
buddyScore = 0;
break;
};
return buddyScore;

}

提前谢谢您。

最佳答案

getFinalScore 方法的副作用是,它会在最终返回之前使用 getBuddyScore 的返回值更改 finalScore。因此,每次调用 getFinalScore 都会增加该值。在您的循环中,我看到您调用该方法四次;如果您单步执行代码,您应该在同一迭代中看到四个完全不同的值。

我猜你想这样做?

return finalScore + buddy.getBuddyScore();

关于Java-循环内返回数据准确性的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23001815/

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