2017-04-12 1 views
0

Ich habe gerade erst vor ein paar Tagen mit Java begonnen. Ich folge gerade diesem "Kurs" http://programmingbydoing.com. Havent hatte keine Probleme noch, aber jetzt bei Aufgabe Stück im 32.If/else Anweisungen

heren mein Code so weit (immer Eichhörnchen bekommt statt Elch als Ausgabe):

import java.util.Scanner; 

public class TwoQuestion32 {

public static void main(String[] args) { 
    boolean animal, vegetable, mineral, smallerthan; 

    String whatIsIt, biggerThan; 
    Scanner keyboard = new Scanner(System.in); 


    System.out.println("Hello and welcome, i've got 2 questions for you!"); 
    System.out.println("Think of an object and i'll try to guess it"); 
    System.out.println(); 
    System.out.println("Question 1) Is it an animal, vegetable or mineral?"); 
    System.out.print(">"); 
    whatIsIt = keyboard.nextLine(); 

    if (whatIsIt == "animal") 
      animal = true; 
      if (whatIsIt == "vegetable") 
      vegetable = true; 
      if (whatIsIt == "mineral") 
      mineral = true; 


    System.out.println("Question 2) Is it bigger than a breadbox?"); 
    System.out.print(">"); 
     biggerThan = keyboard.nextLine(); 
      if (biggerThan == "yes") 
      smallerthan = false; 
      if (biggerThan == "no"){ 
      smallerthan = true;} 


      System.out.print("My guess is that you are thinking of a "); 
     if (animal = true){ 
      if (smallerthan = true) 
       System.out.println("squirrel"); 
     }else { 
       System.out.println("moose");} 
} 
} 

Vielen Dank im Voraus! Würde auch lieben, Tipps zu hören, wie man den Code klüger aufstellt. Sei freundlich, vergiss nicht, ich habe gerade angefangen!

Edit: Okay, ich nahm einen anderen Ansatz. Mein erster Versuch war wirklich seltsam. Danke für die Hilfe!

Heres der Arbeitscode:

import java.util.Scanner; 

public class Questions32 {

public static void main(String[] args) { 
    Scanner keyboard = new Scanner(System.in); 


    String whatIsIt, whatIsIt2; 
    String animal = "animal"; 
    String mineral = "mineral"; 
    String vegetable = "vegetable"; 
    String bigger = "yes"; 
    String smaller = "no"; 


    System.out.println("Hello and welcome, i've got 2 questions for you!"); 
    System.out.println("Think of an object and i'll try to guess it"); 
    System.out.println(); 
    System.out.println("Question 1) Is it an animal, vegetable or mineral?"); 
    System.out.print(">"); 
    whatIsIt = keyboard.nextLine(); 

    System.out.println("Question 2) Is it bigger than a breadbox?"); 
    System.out.print(">"); 
     whatIsIt2 = keyboard.nextLine(); 

    if (whatIsIt.equalsIgnoreCase(animal)){ 
     if (whatIsIt2.equalsIgnoreCase(bigger)){ 
      System.out.println("My guess is that you are thinking of a moose"); 
     }else{ System.out.println("My guess is that you are thinking of a squirrel"); 
     } 
    } 

    if (whatIsIt.equalsIgnoreCase(vegetable)){ 
     if (whatIsIt2.equalsIgnoreCase(bigger)){ 
      System.out.println("My guess is that you are thinking of a melon"); 
     }else{ System.out.println("My guess is that you are thinking of a carrot"); 
     } 
    } 

    if (whatIsIt.equalsIgnoreCase(mineral)){ 
     if (whatIsIt2.equalsIgnoreCase(bigger)){ 
      System.out.println("My guess is that you are thinking of a Camaro"); 
     }else{ System.out.println("My guess is that you are thinking of a paper clip"); 
     } 
    } 
    System.out.println("I would ask you if I'm right, but I dont actually care."); 

    } 


} 
+1

Vergleichen Sie keine Strings mit '==' oder '! ='. Verstehen Sie, dass dies * Referenzen * vergleicht - dass die beiden String-Variablen auf das gleiche String * -Objekt * verweisen und das ist nicht das, was Sie wollen. Verwenden Sie stattdessen entweder die String 'equals (...)' oder ihre 'equalsIgnoreCase (...)' Methoden, die einen * funktionalen Gleichheitstest * durchführen - dass die Strings die gleichen Zeichen in der gleichen Reihenfolge haben - was genau ist was du willst. –

+0

Lesen Sie auch den Unterschied zwischen Zuweisung und relationaler Gleichheit. Für einen Bonus lesen Sie Yoda-Ausdrücke nach. Obwohl nur eine 3-Uhr-Debugging-Sitzung dauerhaft den Unterschied verstärkt. – Bathsheba

+1

Nicht sicher, welche IDE Sie verwenden, aber Sie sollten eine große fette Warnung erhalten haben, wenn Sie eine Aufgabe innerhalb einer Wenn-Bedingung ausführen. Ignorieren dieser Warnungen ist eine todsichere Möglichkeit, Bugs einzuführen, vor allem als Anfänger. –

Antwort

1

in Ihrer if-Anweisung Sie Tier wahr jedes Mal if (animal = true){ setzen, anstatt sie zu prüfen (==). Auch für Strings müssen Sie .equals() anstelle von == verwenden.