(家庭作业)跑步,但没有返回我需要的值

时间:2014-02-24 11:07:46

标签: java loops

我是编程新手。我知道循环会让这看起来效率更高。但就目前而言,我只需要找出如何返回正确的值。 我需要根据它们的价值找出最好的动物。应返回最高值。

  • 我已经在代码中将代码更改为.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 + ".");
    }
    
    }
    

我希望对此有所帮助,谢谢。

3 个答案:

答案 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。