Kann mir jemand sagen was hier falsch ist?

EugenIS

Mitglied
Hallo, ich habe drei Klassen, (falls jemand die sehen will, frage davor reinsehen, die stehen dort drin). aber es geht hier um was anderes:

habe das:

Code:
public class Februar2009 {

    public static void main(String[] args) {
        List<Tier> tiere = new ArrayList<Tier>();




        Scanner sc = new Scanner(System.in);
        do {
            System.out.print("Hund oder Katze eingeben:");
            sc.nextLine();
            if (sc.equals("Hund")) {
                tiere.add(new Hund());
                System.out.println("Hund wurde zugefügt!");
            }
            if (sc.equals("Katze")) {
                tiere.add(new Katze());
                System.out.println("Katze wurde zugefügt!");
            }
        } while (!sc.equals("ende"));
    }
}

Wenn ich jetzt Hund eingebe, passiert irgend wie nichts. ende auch nciht. ist equals kein vergleich für strings oder scanne ich falsch ein?

Danke im vorraus.
 
mit sc.equals() vergleichst du nicht die Eingabe, sondern ob sc und z.b. "ende" gleich sind. Sind sie aber nicht (nicht mal vom Typ her). Du musst den Rückgabewert von nextLine(); prüfen.
 
Code:
        Scanner sc = new Scanner(System.in);
        do {
            System.out.print("Hund oder Katze eingeben:");
            sc.nextLine();
            if (sc.nextLine().equals("Hund")) {
                tiere.add(new Hund());
                System.out.println("Hund wurde zugefügt!");
            }
            if (sc.nextLine().equals("Katze")) {
                tiere.add(new Katze());
                System.out.println("Katze wurde zugefügt!");
            }
        } while (!sc.equals("ende"));


???? passiert nichts. hm...
 
probiers mal so:
Java:
String next=sc.nextLine();
if(next.equalsIgnoreCase("hund"))  {...}

besser gesagt so:
Java:
String next=null;
do {
	next=in.nextLine();
	if(next.equalsIgnoreCase("hund"))	 {
....
da du [c]next[/c] noch in dem [c]} while(...);[/c] benötigst
 
Code:
    public static void main(String[] args) {
        List<Tier> tiere = new ArrayList<Tier>();
        Scanner sc = new Scanner(System.in);
        String next;
        do {
            next=sc.nextLine();
            System.out.print("Hund oder Katze eingeben:");
            sc.nextLine();

            if (next.equalsIgnoreCase("Hund")) {
                tiere.add(new Hund());
                System.out.println("Hund wurde zugefügt!");
            }
            if (next.equalsIgnoreCase("Katze")) {
                tiere.add(new Katze());
                System.out.println("Katze wurde zugefügt!");
            }
        } while (!next.equalsIgnoreCase("ende"));
    }
}

tutet nicht.
 
tutet nicht ist keine Problembeschreibung. Ich schätze mal, es "tutet nicht", weil du [c]next[/c] nicht initalisiert hast.
Also, entweder [c]String next=null;[/c] oder [c]String next="";[/c] schreiben. Und btw:

icon4.gif
Java™ Quelltext ist bitte in
Java:
[/B]-Tags zu schreiben:[/SIZE] [noparse][code=Java]hier Java Code einfügen
[/noparse]
 

Zurück
Oben