WLAN / Wifi - Status auslesen - char array to int

datenmuell

Grünschnabel
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:
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
 
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.
 
Zuletzt bearbeitet:
Zurück