我有这个错误:
输出显示来自程序的 3 个 C。我自己输入了“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 之前放置了一个称为垃圾的整数来删除空格或不需要的字符。工作完美。问题是串行设备用 and 终止其输出。这两个留在缓冲区中未读,因此当读取下一个数据时,实际上什么都没有,因此在 Double.parseDouble(dataStr.trim()); 处发生错误。