Java-返回数据问题';在一个循环内的精确性
我之前的问题已经解决了。然而,我从另一个类中获取的数据的准确性有问题。我知道currentScore.finalScore仅在使用时更新。但是,我有finalScore=currentScore.finalScore。我的打印行显示它会更新,但看起来是随机数,即使这个数字导致while语句变为false,它也会无限继续Java-返回数据问题';在一个循环内的精确性,java,class,infinite-loop,Java,Class,Infinite Loop,我之前的问题已经解决了。然而,我从另一个类中获取的数据的准确性有问题。我知道currentScore.finalScore仅在使用时更新。但是,我有finalScore=currentScore.finalScore。我的打印行显示它会更新,但看起来是随机数,即使这个数字导致while语句变为false,它也会无限继续 public static void main(String[] args) { Scanner keyboard = new Scanner (Syst
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从中提取的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;
}
提前谢谢。您的while循环错误,
运算符应为&¬||
while(currentScore.getFinalScore()=minScore)代码>
当值大于等于0时,该值始终为真。您的while循环错误,
运算符应为&¬||
while(currentScore.getFinalScore()=minScore)代码>
当值为0或更高时,这将始终为真。您的getFinalScore
方法的副作用是,它在最终返回之前使用getBuddyScore
的返回值更改finalScore
。因此,每次调用getFinalScore
都会增加值。在您的循环中,我看到您四次调用该方法;如果您一步一步地浏览代码,您应该会在同一个迭代中看到四个完全不同的值
我猜你想改做这个
return finalScore + buddy.getBuddyScore();
getFinalScore
方法的副作用是,在最终返回之前,它使用getBuddyScore
的返回值更改finalScore
。因此,每次调用getFinalScore
都会增加值。在您的循环中,我看到您四次调用该方法;如果您一步一步地浏览代码,您应该会在同一个迭代中看到四个完全不同的值
我猜你想改做这个
return finalScore + buddy.getBuddyScore();
我不知道我是怎么忽略了这么简单的事情,我很感激你向我指出这一点。然而,我仍然不确定为什么finalScore会增加用户输入值的倍数。我不确定我怎么会忽略了这么简单的东西,我很感谢你向我指出这一点。然而,我仍然不确定finalScore为什么会增加用户输入值的倍数。我删除了我之前的评论,我发现了这个问题。我创建了一个只返回finalValue的方法。这允许在不添加buddyScore的情况下返回分数。谢谢你的帮助,我真的很感激!我删除了我以前的评论,实际上我发现了这个问题。我创建了一个只返回finalValue的方法。这允许在不添加buddyScore的情况下返回分数。谢谢你的帮助,我真的很感激!