Wieso werden Char-Werte wie Zahlen addiert?

Status
Nicht offen für weitere Antworten.

Feder

Mitglied
Mein Programm addiert die Buchstaben des Chars wie Zahlen...
Dabei will ich ja nicht die Summe vergleichen, sondern die Gleichheit der Zeichenfolgen prüfen.

Code:
char[] Text= {'M','E','I','N','E','K','L','E','I','N','E'}; 

            if (Text[4]+Text[5]+Text[6]==Text[7]+Text[8]+Text[9])            
            {          
               
            }

Das macht das Programm:
Text[4]+Text[5]+Text[6])==(Text[7]+Text[8]+Text[9]
Buchstabe: E + K + L == E + I + N
Dezimalwert(Ascii): 69 + 75 + 75 == 69 + 73 + 78
Ergebnis: 220 == 220

Das Programm gibt mir aus, dass "EKL" das gleiche wie "EIN" ist.

Meine Frage an euch: Wie mache ich, dass er die Buchstaben als Buchstaben ansieht und nicht als Zahlen bzw. wie kann ich es machen, dass er die Buchstabenfolgen und nicht die Summe der Buchstaben vergleicht?
 
G

Guest

Gast
char sind genau genommen auch nur zahlen, die aber als zeichen interpretiert werden. mit dem operator + werden zu allererst zahlen addiert und da char ja einen zahlenwert besitzt ... ... ...
einziges mir bekanntes gegenbeispiel hierfür ist die klasse String für die der operator + eine sonderbedeutung hat.

wenn du zeichenfolge miteinander vergleichen willst, ist String die lösung für dein problem. gehe dabei einfach wie folgt vor: erzeuge aus den charactern die du vergleichen willst einen String. das kann beispielsweise in der art passieren:
Code:
char[] text = new char[]{...};
String text1 = new String();
text1 += text[0];
text1 += text[1];
text1 += text[2];

String text2 = new String();
text2 += text[3];
text2 += text[4];
text2 += text[5];
auch eine for-schleife ist hier nicht nur denkbar sondern meißtens auch äusserst effektiv und anzuraten. kommt halt immer drauf an, wie du deine character-zeichenketten erhältst. wenn du aus einem ganzen char[] einen String machen willst, geht das mittels new String(myCharArray);.

anschließend brauchst du nur die beiden Strings mittels equals(...) abzugleichen. du kannst sogar die reihenfolge der Strings nach alphabethischer sortierung erfahren über die methode compareTo(...). bei letzterem könntest du sogar einen eigenen Comparator verwenden, der beispielsweise sonderfälle beachtet.

übrigends denke an saubere programmierung. klassennamen haben einen großen anfangsbuchstaben, alles andere beginnt mit einem kleinen buchstaben. also auch dein char[] Text sollte, damit jeder weiß, das Text eine variable ist und keine klasse, mit einem kleinen buchstaben beginnen.

viel erfolg

wayne
 

Feder

Mitglied
Danke dir für die gute Hilfe. :)

Ich versuche das grade mit Strings, so wie du es gesagt hattest, nur leider klappt das bei mir nicht.
Das war auch der Grund, warum ich Char gewählt habe. ^^

So sieht es bei mir eigentlich in Char aus... was allerdings wegen dem Problem, dass die Zeichen als Zahlen interpretiert werden bzw. gehandhabt werden, nicht klappt.

Code:
 char[] text= {'M','E','I','N','E','K','L','E','I','N','E'};
public void Buchstabenfolgen()
    {
        System.out.println("Gefundene Buchstabenfolgen:");
        for (i=0;i<laengeText-5;i++)
        {   
            // Sucht nach gleichen Buchstabenfolgen der Länge 3
            if ((text[i]+text[i+1]+text[i+2])==(text[i+3]+text[i+4]+text[i+5]))           
            {
                System.out.println("Folge: " + text[i]+text[i+1]+text[i+2]);
               
            }          
            
        }
        
    }

Mit Char kann ich die Zeichenfolgen durch die for-Schleife um einer Schritt weiter führen (i);
mit String funktioniert das bei mir allerdings nicht.

Kannst du mir noch mal helfen? Oder auch jemand anders?
Hab schon zich Möglichkeiten mit String ausprobiert. Ohne Erfolg.

Und leider funtioniert diese Variante nicht: ^^"
Code:
 if ( teilString += text[i+1]+text[i+2] == teilString += text[i+3]+text[i+4])
 

madboy

Top Contributor
Böse:
Code:
if ( teilString += text[i+1]+text[i+2] == teilString += text[i+3]+text[i+4])

Gut:
Code:
if ( (teilString += text[i+1]+text[i+2]).equals(teilString += text[i+3]+text[i+4]))
 

wayne

Bekanntes Mitglied
ok, verstehe was du machen willst. es soll also eine zeichenfolge der länge 3 gesucht werden, die doppelt vorkommt. das ist nicht wirklich so problematisch:
Code:
String zeichenfolge = new String("MEINE KLEINE");
for( int i = 0; i < zeichenfolge.length() - 6; i++ )
    for( int j = i+3; j < zeichenfolge.length()-3;j++)
        if( zeichenfolge.substring(i,i+3).equalsIgnoreCase(zeichenfolge.substring(j,j+3)) ){
            System.out.println("Folge: "+zeichenfolge.substring(i,i+3));
            return;
        }
System.out.println("keine Folge gefunden");
das hier sollte es tun (hab's aber net getestet, sondern grad mal hier aufgesetzt). durch die methode equalsIgnoreCase(...) bleibt sogar die groß-/kleinschreibung unbeachtet. wenn dir das aber wichtig wäre, dann ersetze diese methode einfach durch equals(...).

übrigends kannst du strings, ausser über die methode substring(...), welche dir teile des Strings zurückgibt, auch über die methode charAt(...) zeichenweise abgehen und so dann auch wieder auf einzelne characters kommen.

viel erfolg

wayne
 

Feder

Mitglied
Danke nochmal allen. :wink:

Und danke Wayne, deine Vorgehensweise erleichtert die Arbeit ungemein.
Ich habe mit meiner Variante richtig zu tun gehabt und hatte ständig nicht das Ergebnis,
was ich erreichen wollte. Mit substring zu arbeiten ist echt klasse.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
sserio Wieso werden nicht alle Primzahlen bis 1000 in meine Liste gepackt ? Java Basics - Anfänger-Themen 8
G Interface java.util.Comparator: Wieso muss nur die Methode compare() implementiert werden Java Basics - Anfänger-Themen 2
J Regex Ausdrücke im Array - Wieso werden sie nicht erkannt? Java Basics - Anfänger-Themen 4
P Wieso kann ich als Index für einen Array einen Char angeben? Java Basics - Anfänger-Themen 3
Ostkreuz Wieso wird die Methode nochmal aufgerufen? Java Basics - Anfänger-Themen 5
H Interface Wieso "List<String> list = new ArrayList<>[…]" Java Basics - Anfänger-Themen 4
I Methoden Wieso wird mein Array "a" verändert und meine Variable "a" nicht? Java Basics - Anfänger-Themen 4
sserio Wieso funktioniert mein Programm nicht Java Basics - Anfänger-Themen 2
sserio Wieso funktioniert mein TableView nicht /JavaFX. Java Basics - Anfänger-Themen 4
N Wieso funktioniert die Deklaration nicht Java Basics - Anfänger-Themen 3
Zrebna Umgebungsvariable Wieso wird meine verwendete JDK-Version in der Prompt nicht erkannt? Java Basics - Anfänger-Themen 6
F Wieso wird immer die falsche Mausposition angegeben? Java Basics - Anfänger-Themen 1
C Objekt1.equals(Objekt2) = immer false. Wieso? Java Basics - Anfänger-Themen 22
A Wieso bekomme ich hier zwei unterschiedliche Ausgaben? Java Basics - Anfänger-Themen 6
J Fehler im Code, aber ich weiß nicht wieso! Java Basics - Anfänger-Themen 6
ZH1896ZH Wieso diese Ausgabe?? Java Basics - Anfänger-Themen 10
W Wieso funktioniert mein Switch Case nicht ?! Java Basics - Anfänger-Themen 9
D Interface Wieso Aufruf aller Methoden eines Interfaces? Java Basics - Anfänger-Themen 11
F Wieso wird dieser Befehl nicht ausgeführt? (Anfänger) Java Basics - Anfänger-Themen 2
H Datentypen 64 Bit passt in 32 Bit, wieso? Java Basics - Anfänger-Themen 9
L Input/Output Wieso kommt diese Ausgabe? Java Basics - Anfänger-Themen 12
H Wieso wird mir ein Fehler angezeigt? Java Basics - Anfänger-Themen 5
H Wieso öffnet sich der Texteditor? Java Basics - Anfänger-Themen 6
ChrisPL4Y Wieso funktioniert dieses Programm nicht? Java Basics - Anfänger-Themen 6
B Wieso wird die Zeile "column" genannt und die Spalte "line"? Java Basics - Anfänger-Themen 12
B Wieso wird hier so viel als falsch angezeigt? Java Basics - Anfänger-Themen 2
B Wieso gibt er hier nur die ungeraden Zahlen aus? Java Basics - Anfänger-Themen 5
B Wieso gibt das Programm in der Console kein Ergebnis aus? Java Basics - Anfänger-Themen 2
A Wieso charAt(0) + charAt(3) = INT-Wert? Java Basics - Anfänger-Themen 5
H NullPointerException, aber wieso? Java Basics - Anfänger-Themen 5
P Cannot find symbol, wieso? Java Basics - Anfänger-Themen 5
K Wieso muss man finale statische Variablen sofort oder eben im Konstruktor initialisieren? Java Basics - Anfänger-Themen 2
F Operatoren Wieso fliegt hier eine NullPointer Exception :( Java Basics - Anfänger-Themen 3
Z JPanel wird zweimal hinterinander gezeichnet.. Wieso? Java Basics - Anfänger-Themen 4
T Wieso kann ich das jar file nicht starten? Java Basics - Anfänger-Themen 5
S Wieso wird mein JFrame transparent dargestellt? Java Basics - Anfänger-Themen 5
A Wieso übergibt der nicht die bearbeitete txt file Java Basics - Anfänger-Themen 8
Z Lotto-Programm Wieso klappt das? Java Basics - Anfänger-Themen 8
P Compiler-Fehler wieso zeigt der compiler ein else without if? Java Basics - Anfänger-Themen 3
S OOP Die Methode funktioniert, aber wieso? Java Basics - Anfänger-Themen 2
X Connection reset, wieso? Java Basics - Anfänger-Themen 4
T Objektorientierte Programmierung - Kein Plan wieso das nicht funktioniert! Java Basics - Anfänger-Themen 6
A Bild verschwindet! Wieso?? Java Basics - Anfänger-Themen 2
A Wieso kann ich nicht auf diese Variable zugreifen? Java Basics - Anfänger-Themen 6
A Wieso funktioniert dieser Timer nicht?? Java Basics - Anfänger-Themen 3
A Wieso denn das??? Java Basics - Anfänger-Themen 2
A Wieso erscheinen die Objekte manchmal und manchmal nicht Java Basics - Anfänger-Themen 2
A Erste Schritte Wieso funktioniert diese Klasse nicht Java Basics - Anfänger-Themen 11
R Wieso funktioniert dieses Array nicht? Java Basics - Anfänger-Themen 13
S Methoden void-Methode: Wieso gibt es eine Rückgabe? Java Basics - Anfänger-Themen 5
X Stack mit Oberklasse, wieso funktioniert es nicht? Java Basics - Anfänger-Themen 8
SexyPenny90 Wieso ist diese eigene Equals-Methode schlecht? Java Basics - Anfänger-Themen 17
C Klassen Wieso kein infiniter Regress? Java Basics - Anfänger-Themen 4
M ArrayList - remove() löscht nicht! - weiß nicht wieso! Java Basics - Anfänger-Themen 8
X Wieso mehrere JRE ordner? Java Basics - Anfänger-Themen 8
A Wieso wird immer 0 ausgegeben? Java Basics - Anfänger-Themen 4
R Wieso hat ein Konstruktor keinen Rückgabetyp? Java Basics - Anfänger-Themen 6
T JTable wird nicht erzeugt, wieso? Java Basics - Anfänger-Themen 17
S JTable removeRow() IndexOutOfBounceException - wieso? Java Basics - Anfänger-Themen 3
S wieso Fehlermeldung cannot find symbol hier Java Basics - Anfänger-Themen 10
N NumberFormatException, aber wieso? Java Basics - Anfänger-Themen 5
E Wieso funktioniert Boolean.parseBoolean(s) nicht? Java Basics - Anfänger-Themen 9
T Wieso kompiliert das? Java Basics - Anfänger-Themen 7
B Erste Schritte Programm kompiliert nicht. Wieso? Java Basics - Anfänger-Themen 14
Luk10 Wieso bricht die Rekursion nicht ab? Java Basics - Anfänger-Themen 3
B Warnung : Dead Code. Aber wieso? Java Basics - Anfänger-Themen 10
W Compiler-Fehler NullPointerException. Aber wieso? Java Basics - Anfänger-Themen 2
C Conways Game of Life / "Waldbrandsimulation": wieso temporäres Hilfs-Array?! Java Basics - Anfänger-Themen 8
R If-Abfrage liefert false zurück, wieso ? Java Basics - Anfänger-Themen 20
K Methode funzt nicht, wieso? Java Basics - Anfänger-Themen 12
H Wieso ist das eine Endlosschleife? Java Basics - Anfänger-Themen 8
R wieso Nullpoint und was mit Events ? Java Basics - Anfänger-Themen 14
C Wieso funktioniert das Array nicht? Java Basics - Anfänger-Themen 10
R Wieso hänge ich hier in einer Endlosschleife (vermute ich zumindest)? Java Basics - Anfänger-Themen 2
M Wieso funktioniert dieser simple Code nicht? Java Basics - Anfänger-Themen 9
J Wert wird überschrieben, weiß nicht wieso Java Basics - Anfänger-Themen 2
S wieso ist mein Code falsch? Java Basics - Anfänger-Themen 2
D array.toString() wieso funktioniert es nicht Java Basics - Anfänger-Themen 4
A Wieso terminiert das Programm nicht? Java Basics - Anfänger-Themen 4
B Wieso ein Fehler? illegal Starts of expression? Java Basics - Anfänger-Themen 12
radiac Wieso bekomme ich kein Bild drauf??? Java Basics - Anfänger-Themen 13
Hatebreed Keine Datenbankverbindung, wieso? (ClassNotFoundEscpetion) Java Basics - Anfänger-Themen 18
U Anfänger Frage - Ausgabe funktioniert nicht - Wieso? Java Basics - Anfänger-Themen 10
G Wieso enum Declaration nur außerhalb einer Methode möglich? Java Basics - Anfänger-Themen 9
S Wieso funtkioniert das SQL DELETE nicht? Java Basics - Anfänger-Themen 1
K Wieso schaltet meine CheckBox von selbst um ? Java Basics - Anfänger-Themen 31
fill0soph Wieso ist "Minus-Unendlich" == 1? Java Basics - Anfänger-Themen 4
G Wieso werdne die componentne nciht angezeigt Java Basics - Anfänger-Themen 4
B Primzahlen berechnen - Wieso unterschiedliche Java Basics - Anfänger-Themen 3
K Wieso wird "paint" nicht ausgeführt ? Java Basics - Anfänger-Themen 2
F Wieso java.lang.StackOverflowError (minimales programm) Java Basics - Anfänger-Themen 11
G Wieso eine nullpointerexception? Java Basics - Anfänger-Themen 6
G Wieso ist eine String-Übergabe keine by-reference-Zuweisung? Java Basics - Anfänger-Themen 7
K Wieso kommt ne NullPointerException Java Basics - Anfänger-Themen 3
N Wieso final ? Java Basics - Anfänger-Themen 4
H wieso syntax error bei else ? Java Basics - Anfänger-Themen 3
H wieso fehler ? must return a type of int. Java Basics - Anfänger-Themen 4
M Wieso zeichnet es nicht auf den JPanel Java Basics - Anfänger-Themen 7
V Wieso NullPointerException Java Basics - Anfänger-Themen 7
M Wieso finden andere nicht die main .class Java Basics - Anfänger-Themen 20

Ähnliche Java Themen

Neue Themen


Oben