我有此錯誤:Java.lang.NumberFormatException錯誤
輸出顯示圖3C的其是從該程序。我自己輸入「12.34」。
預料的輸出應該是:
C
C
C
12.34
12.34 is the first string
12.34 is the second string
12.34本來是要轉換爲double,但我得到了奇怪的字符來代替。
我沒能找到解決方案。我嘗試了不同的方法,但我仍然有同樣的錯誤。
這裏是我的程序:
int ch = 0;
int i = 0;
int counter = 0;
int sum = 0;
double[] conArray = new double[3];
//string[] conArray = new string[3];
double dataDbl;
String dataStr = null;
double data = 0;
String s = "C";
String t = "Hello";
//StringBuffer sb = new StringBuffer();
//String con = "C";
////System.out.println("Starting!");
System.out.println("C");
buffer.setLength(0);
System.out.println("C");
buffer.setLength(0);
System.out.println("C");
buffer.delete(0,buffer.length());
while (i < 300) {
ch = inStream.read();
if ((ch == '\r') || (ch == '\n')) {
i = 300;
}
buffer.append((char)ch);
i++;
}
dataStr = buffer.toString();
dataDbl = Double.parseDouble(dataStr.trim());
conArray[counter] = dataDbl;
outStream.writeChars(dataStr);
System.out.println(" is the first string");
outStream.writeDouble(conArray[counter]);
System.out.println(" is the first data");
buffer.delete(0,buffer.length());
counter++;
我找到了修復,那就是:
int trash = 0;
trash = inStream.read();
System.out.println("C");
while (true) {
ch2 = inStream.read();
if ((ch2 == '\r') || (ch2 == '\n')) {
break;
}
if (ch2 != 32) {
sb.append((char)ch2);
}
我把所謂的垃圾擺脫inStream中之前的空間或不需要的字符的整數。完美工作。問題在於串口設備通過和終止輸出。這兩個保留在未讀取的緩衝區中,因此當讀取下一個數據時,沒有什麼真正存在的,因此Double.parseDouble(dataStr.trim());發生錯誤。
任何想法爲什麼發生錯誤? –
同意@juergend,此外,這段代碼不會編譯,你在哪裏定義緩衝區? –
如何接受?我知道這聽起來很愚蠢...... –