if-Abfrage, ungleich und falscher true Wert?

H

herrSchlaumann

Mitglied
Moin zusammen,

meine Aufgabe ist es, einen Text aus mehreren Wörtern zu lesen und für jedes Wort die längste darin auftretende Folge von Konsonanten zu berechnen. Jedes Wort soll zusammen mit der Länge seiner längsten Konsonantenfolge ausgegeben werden.

Von meinem Verständnis her sieht der Code schon ganz gut (mal davon abgesehen, dass man ihn noch optimieren kann, geht erstmal um die Funktionalität).

Hier ist der Code:
Java:
static void konsonant (char[] array){
            int i; char ch;
            int sum = 0;
            int len = 0;
            for (i = 0; i < array.length; i++){
                ch = array[i];
            // ch wird nacheinander jedes Zeichen des Zeichenarrays zugewiesen
                if (Character.isLetter(ch)){
                    Out.print(ch);
                    if (array[i] != 'a' || array[i] != 'A' || array[i] != 'e' || array[i] != 'E' ||
                        array[i] != 'i' || array[i] != 'I' || array[i] != 'o' || array[i] != 'O' ||
                        array[i] != 'u' || array[i] != 'U' ){
                        sum += 1;}
                     else {
                    len = sum;
                    sum = 0; }
            
                } else {
                    Out.print(" -> Längste Folge ist: " + len);
                    Out.println();
                    sum = 0;
                        }
                        }
            }
    public static void main(String[] args) {
    
        String text = new String("In der Deutschschweiz gibt es viel Weihnachtsschmuck.");
        // Hier wird der zu untersuchende Text eingegeben und als String gespeichert.
        char[] array = text.toCharArray();
        // Der Text wird zum CharArray transformiert, sodass die einzelnen Zeichen abfragbar gemacht werden
        konsonant(array);
    }
}

Folgendes Problem:
Beim ersten Durchgehen im Debugger setzt er
i = 0 und ch = I. Soweit alles gut.
Nach der Prüfung, ob es ein Buchstabe ist, geht er in die if-Abfrage.
Obwohl hier if (array != 'I') steht, summiert er die trotzdem mit 1.
Warum tut er das? Nach meinem Verständnis müsste er doch in dem Fall in den else-Zweig gehen.

Wo ist mein Denkfehler?
Ich bin sehr dankbar für eure Hilfe.
 
Zuletzt bearbeitet von einem Moderator:
B

Bitfehler

Bekanntes Mitglied
Dein 'I' wird u.a. von der Bedingung
Code:
array[i]!='a'
mit true bewertet. Da die ganzen anderen Bedingungen verodert sind, reicht das um in den Anweisungsblocks des if-Stmt zu gelangen.
 
H

herrSchlaumann

Mitglied
Weil es so schön war, gleich ne Frage hinterher.
Hier der Code nochmal:
Java:
static void konsonant (char[] array){
            int i; char ch;
            int sum = 0;
            int len = 0;
            for (i = 0; i < array.length; i++){
                ch = array[i];
            // ch wird nacheinander jedes Zeichen des Zeichenarrays zugewiesen
                if (Character.isLetter(ch)){
                    Out.print(ch);
                    if (array[i] != 'a' && array[i] != 'A' && array[i] != 'e' && array[i] != 'E' &&
                        array[i] != 'i' && array[i] != 'I' && array[i] != 'o' && array[i] != 'O' &&   
                        array[i] != 'u' && array[i] != 'U') {
                        sum += 1;
                    }if (sum > len){
                            len = sum;
                       
                    } else {
                    sum = 0; }
               
            } else {
                    Out.print(" -> Längste Folge ist: " + len);
                    Out.println();
                    sum = 0;
                    len = 0;
                        }
                        }
            }
    public static void main(String[] args) {
       
        String text = new String("In der Deutschschweiz gibt es viel Weihnachtsschmuck.");
        // Hier wird der zu untersuchende Text eingegeben und als String gespeichert.
        char[] array = text.toCharArray();
        // Der Text wird zum CharArray transformiert, sodass die einzelnen Zeichen abfragbar gemacht werden
        konsonant(array);
    }
}

Das Problem tritt das erste mal beim "t" von Deutschschweiz auf.
t geht in die if-Schleife und erhöht die Summe um 1.
Danach geht t aber auch nochmal in den else-Zweig und setzt die Summe wieder 0, obwohl er eigentlich gar nicht den else-zweig betreten dürfte.

Sicherlich auch nur ne Kleinigkeit, aber ich bekomm es grad net gelöst :/
 
B

Bitfehler

Bekanntes Mitglied
Eine if-Schleife gibt es nicht. Streich das Wort mal ganz schnell aus deinem Wortschatz.

Besser?
Code:
 if (array[i] != 'a' && array[i] != 'A' && array[i] != 'e' && array[i] != 'E' &&
                        array[i] != 'i' && array[i] != 'I' && array[i] != 'o' && array[i] != 'O' && 
                        array[i] != 'u' && array[i] != 'U') {
                        sum += 1;
                        if (sum > len){
                            len = sum;
                        }
                    }else{
                         sum =0;
                    }
 
D

DaSt

Bekanntes Mitglied
Mal angenommen, ich möchte nicht nur die Anzahl der längsten Reihe aufeinanderfolgenden Konsonanten, sondern auch noch die exakte Folge also z.B( Ddda - Folgenlänge=3, exakte Folge=Ddd) wie würde ich da drauf kommen? Sitz jetz schon etwas davor, aber es will nicht klappen.
Ich dachte mir, ich merke mir jeden Index, bei dem der Counter wieder bei 0 anfängt und wenn die Differenz zwischen 2 Indizes gleich meinem Maximalwert ist, habe ich den gesuchten Bereich und diesen gebe ich dann aus.
Fällt euch auf anhieb eine leichtere Lösung ein?
 
X

Xyz1

Gast
Mein du so etwas?:
Code:
[
  {
    "i1": 10,
    "i2": 18,
    "string": "tschschw"
  },
  {
    "i1": 41,
    "i2": 49,
    "string": "chtsschm"
  },
  {
    "i1": 1,
    "i2": 4,
    "string": "n d"
  },
  {
    "i1": 5,
    "i2": 8,
    "string": "r D"
  },
  {
    "i1": 20,
    "i2": 23,
    "string": "z g"
  },
  {
    "i1": 24,
    "i2": 27,
    "string": "bt "
  },
  {
    "i1": 28,
    "i2": 31,
    "string": "s v"
  },
  {
    "i1": 33,
    "i2": 36,
    "string": "l W"
  },
  {
    "i1": 38,
    "i2": 40,
    "string": "hn"
  },
  {
    "i1": 50,
    "i2": 52,
    "string": "ck"
  }
]

Klar, funktioniert das. :)
 
mrBrown

mrBrown

Super-Moderator
Mitarbeiter
Unsinn^^

Solange du noch Konsonanten hast, konkatenierst du die, zb mit StringBuilder, wenn es die längste Folge ist, speicherst du den in einer Variabel wie du es mit len auch machst, und im else-Fall erstellst du einen neuen zum konkatenieren. Ist Analog zu sum und len ;)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Und-Abfrage mit mehreren Ungleich-Operatoren Java Basics - Anfänger-Themen 17
O if Abfrage erkennt String nicht Java Basics - Anfänger-Themen 1
NeoLexx Abfrage mit instanceof führt zu unerwarteten Wert Java Basics - Anfänger-Themen 9
N Bedinugng If-Abfrage wird nie erfüllt Java Basics - Anfänger-Themen 4
L boolean-Abfrage enumeration Java Basics - Anfänger-Themen 3
Y Methoden Wie kann ich eine if-Abfrage bei Setters bauen? Java Basics - Anfänger-Themen 6
S Streams - Abfrage absteigend sortieren Java Basics - Anfänger-Themen 11
F If Abfrage gibt falsches Ergebnis.... Java Basics - Anfänger-Themen 6
F POST-Request mit json - Abfrage mit Java Java Basics - Anfänger-Themen 2
C Javafunktion zur Abfrage eines Quellcodes Java Basics - Anfänger-Themen 15
A JOPtionPaneOptionDialog Abfrage welcher Button gedrückt wurde? Java Basics - Anfänger-Themen 8
B Folgende Abfrage dynamisch programmieren? Java Basics - Anfänger-Themen 8
G if Abfrage: Nicht jeder Fall berücksichtigt Java Basics - Anfänger-Themen 2
I Nur auf Abfrage von einer Text Datei einlesen Java Basics - Anfänger-Themen 11
J Erste Schritte if Abfrage von JButton in 2. Klasse Java Basics - Anfänger-Themen 27
S If Abfrage nur mit bestimmter Initialisierung? Java Basics - Anfänger-Themen 8
Z Boolean Abfrage in einer for each Schleife Java Basics - Anfänger-Themen 2
deatzi Variable aus If Abfrage später nutzen Java Basics - Anfänger-Themen 4
C Instanz einer Klasse während if-Abfrage erzeugen und bei zweiter if-Abfrage wiederverwenden Java Basics - Anfänger-Themen 6
S Backspace Abfrage funktioniert nicht Java Basics - Anfänger-Themen 4
F Interface JFrame mit if-Abfrage automatisch schließen lassen? Java Basics - Anfänger-Themen 3
R Abfrage von Variablen in Unterklassen einer ArrayList Java Basics - Anfänger-Themen 9
G Passwort und Passwort wiederholen in if-Abfrage vergleichen Java Basics - Anfänger-Themen 15
P Altklausur: Abfrage der Summe Java Basics - Anfänger-Themen 9
N Methoden Attribut Abfrage eines anderen Objektes Java Basics - Anfänger-Themen 36
D MySQL Abfrage in JTable speichern Java Basics - Anfänger-Themen 43
D SQL Abfrage anpassen Java Basics - Anfänger-Themen 17
H For-Schleife innerhalb If-Abfrage? Java Basics - Anfänger-Themen 3
F Abfrage ob Eingabe eine Zahl ist Java Basics - Anfänger-Themen 3
O Datentypen Volle 16 Bit eines Short für flags Abfrage nutzen Java Basics - Anfänger-Themen 11
S Input/Output Doppelte Input-Abfrage Java Basics - Anfänger-Themen 3
S Input/Output Programm läuft nach input-Abfrage nicht weiter. Java Basics - Anfänger-Themen 2
M Variablen Eine etwas andere if Abfrage ! Java Basics - Anfänger-Themen 10
F Ja Nein Abfrage und andere Probleme Java Basics - Anfänger-Themen 5
OlafHD Fehler Bei der if Abfrage Java Basics - Anfänger-Themen 5
quecksilver if-Abfrage in main ausführen Java Basics - Anfänger-Themen 4
D if-Abfrage Java Basics - Anfänger-Themen 12
J Abfrage für Programmwiederholung Java Basics - Anfänger-Themen 2
K Alternative zur If-Abfrage Java Basics - Anfänger-Themen 3
M Java als Webanwendung mit Datenbank abfrage Java Basics - Anfänger-Themen 3
D Abfrage ob Variableninhalt korrekt Java Basics - Anfänger-Themen 5
W Vergleich mit If-Abfrage nur für Zahlen bis 07 möglich - Warum? Java Basics - Anfänger-Themen 7
D Operatoren IF Abfrage liefert falsches Ergebnis Java Basics - Anfänger-Themen 4
X Ja nein abfrage? Java Basics - Anfänger-Themen 9
A Erste Schritte Problem bei meiner if-Abfrage! Java Basics - Anfänger-Themen 5
M Enum-Variabel-Abfrage funktioniert nicht? Java Basics - Anfänger-Themen 2
S Java Counter: nur 1 mal hochzählen auch wenn Abfrage mehrmals zutrifft. Java Basics - Anfänger-Themen 1
E Erste Schritte [Noob-Frage] Meine If-Abfrage macht nicht, was sie soll... Java Basics - Anfänger-Themen 2
C Abfrage nach einem Bild im Array Java Basics - Anfänger-Themen 9
A Key Event - Abfrage von 2 gedrückten Tasten Java Basics - Anfänger-Themen 6
T Klasse für Google-Abfrage Java Basics - Anfänger-Themen 9
Z If abfrage - Minimum 0 Java Basics - Anfänger-Themen 9
J Abfrage versetzen Java Basics - Anfänger-Themen 2
D Methoden Abfrage ob ein Wert bereits vorhanden ist Java Basics - Anfänger-Themen 1
thet1983 if() Abfrage Java Basics - Anfänger-Themen 2
A charAt(x)-Abfrage lässt bei Strings<x das Pgrogramm abstürzen. Kann man das verhindern? Java Basics - Anfänger-Themen 4
Uzi21 if - else Abfrage Java Basics - Anfänger-Themen 6
T Index-Abfrage von Pi Java Basics - Anfänger-Themen 5
H Erste Schritte If Abfrage Java Basics - Anfänger-Themen 3
B If Abfrage mit Passwort und Username Java Basics - Anfänger-Themen 2
U einlesen, abfrage Java Basics - Anfänger-Themen 25
T SQL Abfrage Läuft nicht Java Basics - Anfänger-Themen 5
N Probleme mit ActionListener und Logischer Abfrage Java Basics - Anfänger-Themen 4
F Erste Schritte IF-Abfrage fehlerhaft Java Basics - Anfänger-Themen 9
O Downloaden: Trotz If Abfrage wird Datei heruntergeladen Java Basics - Anfänger-Themen 2
D jProgressBar soll bei 100% sein wenn sql Abfrage inkl. jTable schreiben fertig ist... Java Basics - Anfänger-Themen 5
H if-Abfrage double wert Java Basics - Anfänger-Themen 5
M Erstes Prog. OS Abfrage Java Basics - Anfänger-Themen 9
I Einlese Abfrage zweier Variablen in einem Fenster Java Basics - Anfänger-Themen 6
B Boolean abfrage Java Basics - Anfänger-Themen 3
D Variablen Rücksprung nach If Abfrage Java Basics - Anfänger-Themen 16
T If- Abfrage Java Basics - Anfänger-Themen 8
P Taschenrechner , IF-Abfrage Java Basics - Anfänger-Themen 12
D if-Abfrage Java Basics - Anfänger-Themen 6
G Einfache if-Abfrage der Main-Argumente Java Basics - Anfänger-Themen 3
C If abfrage zu getBackground Java Basics - Anfänger-Themen 2
T abfrage eines Integer Array s Java Basics - Anfänger-Themen 5
feardorcha boolean array false - true - Abfrage Java Basics - Anfänger-Themen 10
G Adminrechte abfrage Java Basics - Anfänger-Themen 5
S Abfrage Objekt-Array nach Datentypen Java Basics - Anfänger-Themen 6
R If-Abfrage, || funktioniert nicht Java Basics - Anfänger-Themen 4
S TabbedPane: nach Abfrage oldTab selektieren Java Basics - Anfänger-Themen 5
B Abfrage mittels Variable vereinfachen Java Basics - Anfänger-Themen 6
C Treffer Abfrage Java Basics - Anfänger-Themen 19
M nach jar export keine db abfrage möglich Java Basics - Anfänger-Themen 2
T Datenbank Abfrage Exception Null Java Basics - Anfänger-Themen 2
J Erste Schritte Im Tante-Emma-Laden mehrere Artikel kaufen mit if-Abfrage Java Basics - Anfänger-Themen 24
I Threads If-Abfrage vor kritischem Abschnitt Java Basics - Anfänger-Themen 4
R Switch Abfrage: Found boolean but expected int? Java Basics - Anfänger-Themen 7
K Kleines Anfänger Problem bei der Abfrage Java Basics - Anfänger-Themen 8
C if else Abfrage Java Basics - Anfänger-Themen 11
M Methoden Daten aus einer SQL-Abfrage in eine mehrdimensionales Array einlesen Java Basics - Anfänger-Themen 7
S if abfrage Java Basics - Anfänger-Themen 2
R If-Abfrage liefert false zurück, wieso ? Java Basics - Anfänger-Themen 20
M If Abfrage geht nicht Java Basics - Anfänger-Themen 2
Corben if Abfrage mit Division durch Null Java Basics - Anfänger-Themen 4
P DNS-Abfrage Java Basics - Anfänger-Themen 5
P Passwort Abfrage Java Basics - Anfänger-Themen 3
M Jackrabbit Sql2-Abfrage funktioniert nicht Java Basics - Anfänger-Themen 2
M Datentypen Problem beim zusammenstellen eines Abfrage-Strings Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Anzeige

Neue Themen


Oben