Zeichenketten zählen

Terence86

Aktives Mitglied
Hallo, habe ein kleines Problem. Wenn ich die Methode einzeln teste klappts, aber wenn ich mehrere sachen in die main schreibe bekomme ich das falsche Ergebnis.
Java:
public class Eingabe {

    public static int anzahlString(String s) {
        Scanner sc = new Scanner(System.in);
        int counter = 0;

        while (sc.hasNext()) {

            if (sc.next().equals(s) | s.equals("")) {  // ist hier was falsch?
                counter++;
            }
        
        
        

        }
        sc.close();
        return counter;
    }

    public static void main(String[] args) {
        System.out.println(Eingabe.anzahlString(""));
        System.out.println(Eingabe.anzahlString("Fliegen"));
// Einzeln funktioniert es, aber beide zusammen nicht.
//Beispiel Eingabe war "Wenn vor Fliegen Fliegen fliegen, fliegen Fliegen Fliegen nach."
// Ausgabe ist : 9 und dann 0. Sollte aber 9 und 4 sein.

    
    }
}

Kurze Erläuterung: Der Methode wird ein String s übergeben der zum einen die Wörter zählen soll die s entesprechen, und bei ("") alle Wörter zählen soll.
Kurze Erklärung was falsch ist wäre hilfreich. (PS: Eingabeende (EOF) Ctrl + d (UNIX) und sonst glaub ich Ctrl + z bei Ms-Dos.
 

JCODA

Top Contributor
Java:
            if (sc.next().equals(s) | s.equals("")) {  // ist hier was falsch?
Du willst einen normalen oder-Vergleich haben nehme ich an ;)
Dann solltest du || verwenden. Du verwendest ein bitweises Oder, siehe http://openbook.rheinwerk-verlag.de/javainsel/javainsel_18_001.html
Das stimmt leider nicht, | ist zwar ein Bit-oder, aber auch ein Boolean-oder, es macht einfach keine Shortcuts wie ||,
siehe https://users.drew.edu/bburd/JavaForDummies4/ShortCircuitEval.pdf
 

Terence86

Aktives Mitglied
Also mit || bekomme ich den ersten Wert wieder richtig, aber der 2te ist auch wiederum 0.
Das selbe wenn ich in der Main die beiden Vertausche erste richtig, 2te kommt 0.
 
Zuletzt bearbeitet:

Oben