2016-04-05 9 views
4

Mein Programm sollte den Namen und das Alter aller Katzen mit Klauen, die älter als 3 Jahre sind, ausdrucken. Für den folgenden EingangFalsche Ausgabe von Benutzereingaben basierend auf bedingten Anforderungen

Enter the name of Cat 1: Sam 
Enter the age of Cat 1: 1 
Enter the weight of Cat 1: 5 
Enter the breed of Cat 1: fluffy1 
Does the cat have claws? True or False?: True 

Enter the name of Cat 2: Tom 
Enter the age of Cat 2: 4 
Enter the weight of Cat 2: 5 
Enter the breed of Cat 2: fluffy2 
Does the cat have claws? True or False?: True 

Enter the name of Cat 3: Bob 
Enter the age of Cat 3: 5 
Enter the weight of Cat 3: 5 
Enter the breed of Cat 3: fluffy3 
Does the cat have claws? True or False?: False 

Der Ausgang sollte so aussehen.

The Cats over 3 with claws are: 
Name: Tom 
Age: 4 Years Old 

Das Programm endet jedoch ohne Ausgabe. Hier ist der Code, den ich ausgeführt habe.

import java.io.BufferedReader; 
import java.io.InputStreamReader; 
import java.io.IOException; 

public class MyClass { 

    private static Cat[] catArray = new Cat[3]; 
    public static void main(String[] args) throws IOException { 

     for (int i=0;i<3;i++) { 
      Cat cat = new Cat(); 
      BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); 
      System.out.print("Enter the Name of Cat " + (i+1) + ": "); 
      cat.setName(in.readLine()); 
      System.out.print("Enter the Age of Cat " + (i+1) + ": "); 
      cat.setAge((Integer.parseInt(in.readLine()))); 
      System.out.print("Enter the Weight of Cat " + (i+1) + ": "); 
      cat.setWeight((Double.parseDouble(in.readLine()))); 
      System.out.print("Enter the Breed of Cat " + (i+1) + ": "); 
      cat.setBreed(in.readLine()); 
      System.out.print("Does the cat have claws? True or False: "); 
      String hasClaws = in.readLine(); 
      if(hasClaws.equals("False")) 
       cat.sethasClaws(false); 
      else 
       cat.sethasClaws(true); 
      catArray[i] = cat; 
     } 
     for(int j=0;j<3;j++) { 
      if((catArray[j].getAge()>=3) && (!catArray[j].hasClaws())) { 
       System.out.println("The cats over 3 with claws are: \n"); 
       System.out.println("Name: " + catArray[j].getName()); 
       System.out.println("Age: " + catArray[j].getAge() + " years old"); 
      } 
     } 
    } 
} 

und auch:

public class Cat { 
    private String name; 
    private int age; 
    private double weight; 
    private String breed; 
    private boolean hasClaws; 

    public Cat() {} 

    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 

    public int getAge() { 
     return age; 
    } 

    public void setAge(int age) { 
     this.age = age; 
    } 

    public double getWeight() { 
     return weight; 
    } 

    public void setWeight(double weight) { 
     this.weight = weight; 
    } 

    public String getBreed() { 
     return breed; 
    } 

    public void setBreed(String breed) { 
     this.breed = breed; 
    } 

    public boolean hasClaws() { 
     return hasClaws; 
    } 

    public void sethasClaws(boolean hasClaws) { 
     this.hasClaws = hasClaws; 
    } 
} 
+0

Wenn Sie sagen, er nichts auszudrucken, meinst du man buchstäblich keine Ausgabe sehen (zB '" Geben Sie den Namen Katze 1 "" Nachricht), oder meinst du, dass es keine Katzen im Alter von 3 Jahren oder älter mit Krallen druckt? –

+0

Bitte verunstalten Sie Ihre Frage nicht. – JAL

+0

Ich werde Ihren Namen von der Frage entfernen, aber ** nicht weiter bearbeiten **. Das wird uns beiden das Leben schwer machen. – Undo

Antwort

2

Ich glaube, dass die ! Operator in (catArray[j].getAge()>=3) && (!catArray[j].hasClaws()) Sie ist vermasselt. Dies bedeutet "zeige mir alle Katzen 3 oder älter, die keine Krallen haben".

aus: https://docs.oracle.com/javase/tutorial/java/nutsandbolts/opsummary.html

! Logischer Komplementoperator; invertiert den Wert eines boolean

Try this:

for(int j=0;j<3;j++) { 
    if((catArray[j].getAge()>=3) && (catArray[j].hasClaws())) { 
     System.out.println("The cats over 3 with claws are: \n"); 
     System.out.println("Name: " + catArray[j].getName()); 
     System.out.println("Age: " + catArray[j].getAge() + " years old"); 
    } 
} 
+1

Ihr Punkt ist wahr. Aber es scheint nicht, was das Problem verursacht. Wenn das der Fall war, war die Ausgabe Bob. Aber ich denke, er sagte, es zeige nichts. –

+0

Das ist ein guter Punkt. OP, Jede Änderung in der Ausgabe oder ist das Problem noch aus? – runningviolent