Impressum · Kontakt · Hilfe
Besucher online · Mitglieder



Portal > Foren > Java > Allgemeine Java-Programmierung > Problem mit Arrays
Antwort
 
Themen-Optionen
Alt 06.05.2005, 14:35   Nach oben    #1
pixel
Benutzer
 
Registriert seit: 19.03.2005
Beiträge: 35
Standard Problem mit Arrays

Hallo zusammen,

ich habe zwei Probleme mit des Arrays. Wenn ich mit:

char yesKey[] = {'J', 'a'};

zwei Buchstaben zuweise und die mit:

System.out.println("Inhalt = " + yesKey[0] + yesKey[1]);

ausgebe bekomme ich als Ergebins:

Inhalt = Ja

Soweit ist alles klar. Wenn ich jedoch nur den Inhalt, als ohne Text davor ausgeben möchte und:

System.out.println(yesKey[0] + yesKey[1]);

mache erhalte ich als Ergebnis:

171

Warum ist das so??

Das nächste Problem das ich mit den Arrays habe ist die Berrechnung der Länge. Zunächst deklariere/erzeuge ich zwei Arrays mit:

char yesKey[] = {'J', 'a'};
char cancelKey[] = {'A', 'b', 'b', 'r', 'e', 'c', 'h', 'e', 'n'};

Nun kann ich mit:

System.out.println(yesKey.length);
System.out.println(cancelKey.length);

die "Längen" ausgeben oder mit:

System.out.println(yesKey.length + cancelKey.length);

die addierte Länge. Die oberen Zeilen liefern 2 und 9 und di nachfolgende 11. Soweit funktioniert alles. Hier habe ich nun das Problem das wenn ich einen Text voran stellen möchte, also z.B.:

System.out.println("Gesamtlänge =" + yesKey.length + cancelKey.length);

erhalte ich als ergebnis 29. Die Längen werden aneinander gesetzt und nicht addiert. Ich muß hier einen generellen Denkfehler drin haben aber ich komm leider nicht drauf. Was mache ich falsch?

Viele Grüße
pixel
pixel ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 06.05.2005, 14:41   Nach oben    #2
pixel
Benutzer
 
Registriert seit: 19.03.2005
Beiträge: 35
Standard

Zitat:
die "Längen" ausgeben oder mit:

System.out.println(yesKey.length + cancelKey.length);

die addierte Länge. Die oberen Zeilen liefern 2 und 9 und di nachfolgende 11. Soweit funktioniert alles. Hier habe ich nun das Problem das wenn ich einen Text voran stellen möchte, also z.B.:

System.out.println("Gesamtlänge =" + yesKey.length + cancelKey.length);
ok das habe ich gefunden. Ich habe die Klammern vergessen. Es muß:

System.out.println("Gesamtlänge =" + (yesKey.length + cancelKey.length));

lauten.
pixel ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 06.05.2005, 14:52   Nach oben    #3
Ben
Erfahrener Benutzer
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.616
Standard

Zitat:
Zitat von pixel
Hallo zusammen,
ich habe zwei Probleme mit des Arrays. Wenn ich mit:
PHP-Code:
char  yesKey[] = {'J''a'}; 
zwei Buchstaben zuweise und die mit:
PHP-Code:
System.out.println("Inhalt = " yesKey[0] + yesKey[1]); 
ausgebe bekomme ich als Ergebins:
Code:
Inhalt = Ja
Soweit ist alles klar. Wenn ich jedoch nur den Inhalt, als ohne Text davor ausgeben möchte und:
PHP-Code:
System.out.println(yesKey[0] + yesKey[1]); 
mache erhalte ich als Ergebnis:

Code:
171
Warum ist das so??
Ich könnte mir vorstellen, weil es die entsprechende Methode nicht gibt:
--> http://java.sun.com/j2se/1.5.0/docs/...ystem.html#out

Es ist so, dass Du zwar ein Zeichen ausgeben kannst, das hier sollte also funktionieren:
PHP-Code:
System.out.println(yesKey[0]); 
aber eben nicht zwei Zeichen. Dann musst Du es zum String machen und das geht, indem Du vorher einfach so etwas machst:
PHP-Code:
System.out.println("" yesKey[0] + yesKey[1]); 
Alles ungetestet und ohne irgendwelche Garantie auf Richtigkeit

Grüße Ben.
Ben ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 06.05.2005, 17:37   Nach oben    #4
dyrathror
Neuer Benutzer
 
Benutzerbild von dyrathror
 
Registriert seit: 17.03.2005
Beiträge: 18
Standard

Hi,

Du versuchst gerade mit:
Code:
 System.out.println(yesKey[0] + yesKey[1]);
zwei chars zu konkatenieren, das geht nicht!
Dieser Operator existiert nur für Strings.

Im ersten Fall hast Du einen String gehabt und 2x einen char konkateniert.
Das geht.

Versucht doch mal
Code:
  System.out.println(yesKey);
das sollte auch gehen, da die Methode println(char[]) für PrintStream definiert ist.
dyrathror ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 06.05.2005, 17:56   Nach oben    #5
pago
Projektleiter
 
Registriert seit: 30.11.2005
Ort: Bottrop
Beiträge: 1.091
Standard

Die Werte im Array sind vom Typ "char". Wenn du zwei chars addierst (und genau das passiert, wenn du sie mit einem "+" verbindest), werden sie in ihren Int-Wert umgerechnet und addiert.
Das liegt daran, dass ein char nichts wesentlich anderes ist, als ein int, mit einem Zahlenbereich von 0 bis 256.
Versuch's mal:
Code:
char myChar = 200;
__________________
Patrick Gotthardts Weblog.
pago ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 06.05.2005, 18:35   Nach oben    #6
pixel
Benutzer
 
Registriert seit: 19.03.2005
Beiträge: 35
Standard

Aber was ich dann nicht so ganz verstehe ist das wenn ich ein:

Code:
System.out.println("Der Inhalt ist " + yesKey[0] + yesKey[1]);
Aufrufe ich als Ergebnis:
Code:
Der Inhalt ist Ja
erhalte. Hier addiere ich doch die beiden char's auch nur das ich vorher noch einen String mit ausgebe. Das wäre dann doch genauso falsch, oder?

Viele Grüße
pixel
pixel ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 06.05.2005, 18:41   Nach oben    #7
Ben
Erfahrener Benutzer
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.616
Standard

Nein. "+" ist ja bei Strings zum Zusammenfügen .. Du fügst also dem String noch etwas hinzu ..
Ben ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 06.05.2005, 21:36   Nach oben    #8
pago
Projektleiter
 
Registriert seit: 30.11.2005
Ort: Bottrop
Beiträge: 1.091
Standard

Dort addierst du einen String und ein char. Das ergibt einen String (der neue char wird einfach hinten dran gehängt). Und dann passiert nichtmal das gleiche.

Es gibt übrigens auch einen String-Konstruktor, der ein char-Array als Parameter akzeptiert.
__________________
Patrick Gotthardts Weblog.
pago ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 07.05.2005, 16:26   Nach oben    #9
pixel
Benutzer
 
Registriert seit: 19.03.2005
Beiträge: 35
Standard

ok verstanden. Ich habe im Java-Buch auch eine verständlicher Erklärung gefunden die auch in eueren Antwoten enthalten ist.
"Sobald man ein char, short oder byte mit einem Operator verbindet werden die Operanten in int umgewandelt" deshalb funktioniert auch ein
Code:
hort s1 = 1, s2 = 2, s3;
s3 = s1 + s2;
nicht sondern muß lauten
Code:
hort s1 = 1, s2 = 2, s3;
s3 = (short) (s1 + s2);
Zitat:
Es gibt übrigens auch einen String-Konstruktor, der ein char-Array als Parameter akzeptiert.
Wie würde dieser Aussehen?

Viele Grüße
pixel
pixel ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 07.05.2005, 16:29   Nach oben    #10
Ben
Erfahrener Benutzer
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.616
Standard

Zitat:
Zitat von pixel
Zitat:
Es gibt übrigens auch einen String-Konstruktor, der ein char-Array als Parameter akzeptiert.
Wie würde dieser Aussehen?
Du findest alle verfügbaren String-Konstruktoren in der API:
--> http://java.sun.com/j2se/1.5.0/docs/...ructor_summary

Grüße Ben.
Ben ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist Aus.
Trackbacks are An
Pingbacks are An
Refbacks are Aus

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Problem E-Mails zu senden Jann Hendrik Plauderecke 7 25.05.2007 21:37
Logisches Problem beim einsatz von Ereignissen Prophet Allgemeine Java-Programmierung 19 05.06.2006 22:08
Problem mit Cookie und Reloads... Bookworm PHP-Programmierung 10 13.04.2006 12:09
OSX + Eclipse 3.1 Problem bacarni Eclipse 3 29.07.2005 21:19
[PHP] Was sind eigentlich Arrays? Ben Tutorials 5 09.12.2004 09:29


Alle Zeitangaben in WEZ +2. Es ist jetzt 06:03 Uhr.

Nach oben
Wir nutzen das Zend Framework, vBulletin (vBulletin v3.7.2, Copyright ©2000-2008, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.0.0) und vBSEO.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44