java(家庭作业)正在运行,但未返回所需的值
我对编程很陌生。我知道循环会使这看起来更有效。但是现在,我只需要弄清楚如何返回正确的值。 我需要根据它们的价值找出最好的动物。应返回最大值
我已将代码更改为。在语句中比较时等于,因此现在测量响应。等于(“回答”)它没有为我解决问题
代码当前正在运行,但只返回dragon作为答案
- 我需要代码来返回具有最高值的动物李>
任务要求狗赢得所有平局,而猫总是输掉平局
import java.util.Scanner; public class PetSurvey{ public static void main(String[] args){ String surveyResponse; String y; int dogScore, catScore, dragonScore, z; dogScore = 0; catScore = 0; dragonScore = 0; z = 0; y = "best animal"; Scanner foo = new Scanner( System.in ); System.out.print(" What is your favorite pet? "); System.out.print(" a) Dogs "); System.out.print(" b) Cats "); System.out.print(" c) Dragons "); System.out.print(" d) I like cats, dogs and dragons "); surveyResponse = foo.next(); if (surveyResponse == "a"){ dogScore = dogScore + 3;} if (surveyResponse == "b"){ catScore = catScore + 3;} if (surveyResponse == "c"){ dragonScore = dragonScore + 3;} if (surveyResponse == "d"){ dogScore = dogScore + 1; catScore = catScore + 1; dragonScore = dragonScore +1;} System.out.print(" What is your favorite pet? "); System.out.print(" a) Dogs "); System.out.print(" b) Cats "); System.out.print(" c) Dragons "); System.out.print(" d) I like cats, dogs and dragons "); surveyResponse = foo.next(); if (surveyResponse == "a"){ dogScore = dogScore + 3;} if (surveyResponse == "b"){ catScore = catScore + 3;} if (surveyResponse == "c"){ dragonScore = dragonScore + 3;} if (surveyResponse == "d"){ dogScore = dogScore + 1; catScore = catScore + 1; dragonScore = dragonScore +1;} System.out.print(" What is your favorite pet? "); System.out.print(" a) Dogs "); System.out.print(" b) Cats "); System.out.print(" c) Dragons "); System.out.print(" d) I like cats, dogs and dragons "); surveyResponse = foo.next(); if (surveyResponse == "a"){ dogScore = dogScore + 3;} if (surveyResponse == "b"){ catScore = catScore + 3;} if (surveyResponse == "c"){ dragonScore = dragonScore + 3;} if (surveyResponse == "d"){ dogScore = dogScore + 1; catScore = catScore + 1; dragonScore = dragonScore +1;} if (dogScore > z){ z = dogScore;} if (catScore > z){ z = catScore;} if (dragonScore > z){ z = dragonScore;} if (dogScore == catScore){ z = dogScore;} if (catScore == dragonScore){ z = dragonScore;} if (z == dogScore){ y = "dog";} if (z == catScore){ y = "cat";} if (z == dragonScore){ y = "dragon";} System.out.print(" The most popular pet is: " + y + "."); } }
如果您能在这方面提供帮助,我将不胜感激,提前谢谢
# 1 楼答案
代码中有三个独立的问题
马丁已经报道了第一个问题
第二个是使用==比较字符串。这将检查字符串是否实际上是相同的字符串对象,而不是字符串是否具有相同的值。您应该使用
surveyResponse.equals("a")
第三,您已经在重复代码中标识了自己。转换为循环是正确的前进方向
# 2 楼答案
您的代码有两个主要问题导致其无法正常工作。首先,您不能使用“==”来比较Java中的对象(这会比较对象引用),而是使用equals(正如人们前面指出的)
其次,你对“z”的选择是错误的
这里z指向第一个最高的分数,如果dogScore==catScore,z已经指向dog,所以下面的行是不必要的,而且它们打破了您的逻辑
这将改变z为dogScore,如果用户在所有的静止状态下都选择了dragon(dogScore==0和catScore==0)
和上面一样,但若有人总是挑选狗,z将是龙的分数
# 3 楼答案
您的问题可能与代码末尾比较分数的方式有关
通过先将狗的得分与其他人进行比较(因为狗赢得了所有的比赛),然后将龙的得分与猫的得分进行比较(因为猫失去了所有的比赛),你可以大大简化事情,如下所示:
这样,你就可以完全摆脱
z
,只需专注于比较每只动物的实际得分我希望这有帮助,但如果不清楚,请告诉我