Java -> Ascii Code in Integer umwandeln...

Cybered

Admiral Special
Mitglied seit
22.09.2002
Beiträge
1.625
Renomée
14
Standort
Unimatrix-Zero
Hi,
wollte unter Java eine Tastatureingabe (Zahlen) auslesen und weiterverarbeiten. Allerdings werden die zeichen die ich einlese im Ascii code dargestellt. Wie kann ich jetzt die eingebene Ziffer zB. die 5 auch als 5 weiterverarbeiten ???
Bis jetzt bin ich so weit ->

int input1 = System.in.read(); //Tastatureingabe lesen
int i = (int)(input1-'0'); // vom erhaltenen Ascci wert, den ascii wert der "0" abziehen
System.out.println(i);

Jetzt bekomme ich schon mal den "richtigen" Wert angezeigt, kann diesen aber nicht in einer zählschleife weiterverarbeiten...und wenn ich zb ein "a" eingebe, funktioniert das ganze auch schon nicht mehr...
Keine Ahnung wie ich weiter vorgehen soll, brauche nur nen kleinen Tip :]
thx4all
cybered
 
Das Casting ist immer gefährlich, wenn man nicht mit Bestimmtheit sagen kann, daß die Variable ein bestimmtes Format hat, und gerade hier weißt Du ja nicht, ob der String wirklich nur Ziffern enthält (oder bestenfalls ein Minuszeichen davor).

Benutz doch Integer(String s), das wirft auch ne NumberFormatException, falls es eben keine passende Zeichenkette ist. Methoden entweder parseInt (String s) oder valueOf (String s) oder einfach den Konstuktor.
 
hi,

in c ist es moeglich einen char einfach an einen integer zu uebergeben.
hierbei wird schon intern mit den ascii zeichen gearbeitet.
ist das in java nicht moeglich? ich dacht, das java auch vorwiegend c-syntax verwendet.

wird zb. ein 'A' an ein integer uebergeben, steht dann dort der ascii-wert 65 drin.

gruss tes

edit:
sorry, da hab ich mich wohl verlesen.
den char musst in einen int casten.
 
Zuletzt bearbeitet:
Das mit dem char sollte bei Java auch gehen (mit Datentyp char). Aber das ist ja nicht das Ziel. (denn bei C ist ein Zeichen '5' nicht 5, sondern 53 oder 0x35) Bei C hast Du dann die atoi Funktion, um etwas in ein int zu wandeln (also '5' -> 5)

Bei java ist das gebräuchlichste wohl Integer.parseInt(intZahl). Die Methode ist static, Du musst also kein Integer-Objekt anlegen. Bei den anderen beiden Sachen, die OBrian angesprochen hast, muss immer erst ein Objekt erzeugt werden.
 
Nebenbei, Integer.valueOf() ist auch static ;)

Also das Problem besteht ja eigentlich darin, nicht int und int zu verwechseln. Das System.in.read() gibt ja eine Zahl zwischen 0-255 zurück, als Wert des Chars (oder eben -1 wenn da nix ist). Daraus kann man erst nur einen String machen, da man ja nciht sagen kann, ob es tatsächlich die Ziffer 0-9 ist oder nen Buchstabe, Sonderzeichen oder wer weiß was noch was alles in die Tastatur hacken kann ;) Also bestimmt man dann, ob es ein brauchbares ist oder nicht (-> error handling) und kann dann daraus ein int machen, mit dem man dann weiterrechnen kann wie gewünscht.
 
Zuletzt bearbeitet:
Wie unser Java-Lehrer zu sagen pflegte: "alles ist ein Objekt" ;D
 
Huhu,

BufferedReader din = new BufferedReader ( new InputStreamReader ( System.in ) );
int x = 0;
x = Integer.parseInt( din.readLine () );

probiers mal damit...
Also du liest von der Konsole ein String ein, den musst du entsprechend parsen.... dabei kann es aber zu einer Ausnahme des Typs "NumberFormatException" auftreten die du noch abfangen musst...

Code:
BufferedReader din = new BufferedReader ( new InputStreamReader ( System.in ) );
int x = 0;
try{
x = Integer.parseInt( din.readLine () );
}
catch( NumberFormatException e)
{
  System.out.println( "Kann eingabe nicht formatieren" );
}

gruß! Sieben!
 
vielen Dank...jetzt gehts...hab jetzt zwar noch nen anderen Fehler (Division durch Null), aber das werde ich irgendwie hinbiegen...*buck*
danke
Cybered
 
Zurück
Oben Unten