我是编程新手。我知道循环会让这看起来效率更高。但就目前而言,我只需要找出如何返回正确的值。 我需要根据它们的价值找出最好的动物。应返回最高值。
我已经在代码中将代码更改为.equals,所以现在来自surveyresponse.equals(“回答”)它还没有为我解决问题。
代码目前正在运行,但只返回龙作为答案。
该狗的任务召唤赢得了所有的关系,而猫总是失去了平局。
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 + ".");
}
}
我希望对此有所帮助,谢谢。
答案 0 :(得分:1)
您的问题似乎与您在代码末尾比较分数的方式有关。
你可以通过比较狗得分与其他人的得分(因为狗赢得所有关系)来大大简化事情,然后将龙得分与猫得分(因为猫失去所有关系)进行比较,如下所示:
if (dogScore >= catScore && dogScore >= dragonScore) {
y = "dog";
}
else if (dragonScore >= catScore) {
y = "dragon";
}
else {
y = "cat";
}
通过这种方式,您可以完全摆脱z
并专注于比较每只动物的实际得分。
我希望这有帮助,但如果不清楚,请告诉我。
答案 1 :(得分:1)
您的代码中存在三个单独的问题。
第一个已经被马丁覆盖。
第二个是您使用==比较字符串。这将检查字符串实际上是相同的String对象,而不是字符串具有相同的值。您应该使用surveyResponse.equals("a")
。
您已经在重复的代码中识别出自己的第三个。转换为循环是正确的前进方式。
答案 2 :(得分:0)
您的代码存在两个主要问题,导致其无法正常工作。首先,你不能使用'=='比较Java中的对象(比较对象引用),而是使用equals(正如人们之前指出的那样)。
其次,你选择'z'是错误的。
if (dogScore > z){
z = dogScore;}
if (catScore > z){
z = catScore;}
if (dragonScore > z){
z = dragonScore;}
这里z指向第一高分,如果dogScore == catScore,z已经指向狗,所以以下几行是不必要的,而且它们会破坏你的逻辑。
if (dogScore == catScore){
z = dogScore;}
如果有人在所有静止中选择了龙(如dogScore == 0和catScore == 0),这会将z更改为dogScore
if (catScore == dragonScore){
z = dragonScore;}
与上述相同,但如果有人总是挑选狗,那么z将是dragonScore。