tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
2
ZUGRIFFE
1643
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    datenmuell datenmuell ist offline Mitglied
    Registriert seit
    Jun 2009
    Beiträge
    16
    Hallo zusammen,

    ich probiere gerade die Qualität der aktuellen WLAN-Verbindung unter Debian (gespeichert in "/proc/net/wireless" in Zeile 3, Zeichen 16 und 17) mittels Java auszulesen und benutze dazu bisher Folgendes:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    
    BufferedReader br = new  BufferedReader(new FileReader("/proc/net/wireless"));
    String line = null;
    int i=0;
     
    while(i<3) //until line 3
    {
    line = br.readLine();
    i++;
    }
    char[] quality_ca = new char[4];
     
    line.getChars(15, 15+2, quality_ca, 0);
    String quality_str = new String(quality_ca);
     
    int quality = Integer.valueOf(quality_str).intValue(); //hier ist der Fehler
    System.out.println(quality);

    Ich erhalte als char-Array und als string die korrekten Werte, jedoch wird bei der zweiten Umwandlung (string zu int) eine Exception geworfen, obwohl der String nur "84" lautet. Wenn ich den Wert "84" hardgecoded eingebe, wird keine Exception geworfen. Die Meldung der Exception lautet: "java.lang.NumberFormatException: invalid character at position.."

    Wo könnte das Problem liegen?

    Vielen Dank schon einmal im Voraus!
    datenmuell
     

  2. #2
    Registriert seit
    Dec 2001
    Ort
    Bayern
    Beiträge
    5.805
    Blog-Einträge
    5
    Hallo datenmuell,

    du reservierst in quality_ca Platz für 4 chars, liest dann aber nur 2 ein. Die restlichen zwei Zeichen sind (binär) 0, da du ihnen keinen anderen Wert zuweist. Und an diesen verschluckt sich valueOf dann natürlich.

    Das ganze wäre übrigens nicht passiert, wenn du nicht den Umweg über ein char Array gegangen wärst. Verwende doch einfach String.substring, das liefert dir gleich einen String zurück. Ähnliches gilt für Integer.valueOf: wenn du kein Integer-Objekt brauchst, nimm Integer.parseInt, das liefert gleich ein int zurück.

    Grüße, Matthias

    P.S.: Eine Schleife mit klassischer Zählvariable setzt man in der Regel als for-Schleife um.
    Geändert von Matthias Reitinger (04.07.09 um 02:32 Uhr)
     
    „Gib einem Menschen einen Fisch, und er wird für einen Tag satt. Lehre ihn Fischen, und er wird ein Leben lang satt.“
    “For every complex problem, there is an answer that is short, simple and wrong.”
    “Pessimism is safe, but optimism is a lot faster!”


    Aktuelles Coding Quiz: #17 - Wörter kreuz und quer

  3. #3
    datenmuell datenmuell ist offline Mitglied
    Registriert seit
    Jun 2009
    Beiträge
    16
    Danke für die Antwort, funktioniert nun einwandfrei!
     

Ähnliche Themen

  1. array[char]=char?!
    Von thomy800 im Forum Javascript & Ajax
    Antworten: 2
    Letzter Beitrag: 06.11.07, 18:09
  2. Char Array nach char umwandeln
    Von ProgFreak im Forum C/C++
    Antworten: 11
    Letzter Beitrag: 01.06.07, 02:00
  3. char mit 2D-array
    Von Mickeyman im Forum C/C++
    Antworten: 7
    Letzter Beitrag: 27.03.06, 11:10
  4. WLAN Karte nötig bei "WiFi vorbereitet"?
    Von Carndret im Forum Hardware
    Antworten: 3
    Letzter Beitrag: 21.12.05, 08:48
  5. Ein- und Auslesen in char-Array
    Von DeChecka im Forum C/C++
    Antworten: 10
    Letzter Beitrag: 29.05.05, 11:36

Stichworte