ich habe einen String gegeben und möchte ein Zeichen aus diesem String (Ganzzahl) in inen Integer speichern.
Java:
int zahl =Integer.parseInt(String.valueOf(mystring.charAt(4)));
Dieser Code soll die fünfte Stelle vom String mystring in die Integer-Variable zahl ablegen.
Beim Compilieren gibts keine Fehler, aber beim Ausführen kommt folgende Meldung:
Exception in thread "main" java.lang.NumberFormatException: For input string: ""
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:470)
at java.lang.Integer.parseInt(Integer.java:514)
at EightPuzzle.readIn(EightPuzzle.java:121)
at EightPuzzle.main(EightPuzzle.java:65)
entweder hast du hier irgendwas gepostet, was im code so gar nicht vorhanden ist, oder du hast einen schwerwigenden bug entdeckt. Mich würde mal der code drumherum interessieren.
Hast du meinen Beitrag gelesen? "unmöglich" bezog sich nicht auf String->Integer Umwandlung, sondern auf den fehler, der da angeblich auftreten soll... String.valueOf(char) kann unmöglich "" zurückliefern, das meinte ich mit "unmöglich".
Was dieser Codeausschnitt soll verstehe ich grad gar nicht, da kommt doch nirgends Integer.parseInt vor?! ???:L
äääh, ASCII-Code ist das nicht, aber irgendetwas kryptisches. Wenn du jedenfalls
Code:
int x='1';
hinschreibst, wird in x definitiv nicht der integer-wert 1 gespeichert, sondern irgendeine Zahl, so zwischen 0 und 200 schätz ich mal... Mit deiner eigentlichen Frage scheint es aber nichts zu tun oder? Erzähl mal lieber, was du mit dem code ausschnitt da oben gemeint hast
Aaalso. Hier das leicht abgeänderte Code-Schnipsel. Die Funktion soll ein 3x3-Spielfeld aus einer Textdatei einlesen und dieses im Array board ablegen.
Java:
publicstaticint[][]readIn(String filename){File file =newFile(filename);StringBuffer contents =newStringBuffer();BufferedReader reader =null;try{
reader =newBufferedReader(newFileReader(file));String text =null;// repeat until all lines is readwhile((text = reader.readLine())!=null){
contents.append(text).append(System.getProperty("line.separator"));}}catch(FileNotFoundException e){
e.printStackTrace();}catch(IOException e){
e.printStackTrace();}finally{try{if(reader !=null){
reader.close();}}catch(IOException e){
e.printStackTrace();}}String content=contents.toString();String h;int k=0;int[][] board;
board =newint[3][3];if(content.length()<=20){for(int j=0; j<3; j++){for(int i=0; i<3; i++){if(j==0) k=2*i;//hier wird an die richtige Stelle im String navigiertelseif(j==1) k=2*i+7;elseif(j==2) k=2*i+14;
board[i][j]=content.charAt(k);}}}return board;}
Die zuvor beschriebene Exception ist nicht mehr vorhanden. Das ausgegebene Feld board enthält aber falsche Werte.
Upps, jetzt versteh ich glaub, wenn der char '1' ist, dann soll der Wert der Integervariable auch 1 sein.
Dann ist mein Codebeispiel natürlich falsch, sry.
sollte den "echten" integer wert liefern, der der Ziffer entspricht. Das liegt daran, dass chars '0','1','2'... alle nacheinander folgen, und im prinzip nur komische symbole für stinknormale zahlen sind, also so in etwa:
'0'=789,'1'=790,'2'=791 usw
(die "wahren" werte sind frei erfunden, kA wo das anfängt)
@Der Müde Joe: was hast du dir da tolles rausgesucht? irgendein "beep"-char, oder irgendein "verschluck den letzten char"-char oder irgendsowas hackiges? Das wollte ich dem OP absichtlich ersparen Aber die API ist dennoch ungenau^^:autsch: