이 오류가 발생했습니다 :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이 두 배로 변환하기로했지만, 난 대신 이상한 문자를 얻었다.
나는 해결책을 찾을 수 없습니다. 다른 방법을 시도했지만 여전히 동일한 오류가 발생했습니다. 여기있다,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와 동의하십시오. 게다가,이 코드는 컴파일되지 않습니다. 어디에서 버퍼를 정의합니까? –
수락 방법? 이 소리가 너무 바보 같아서 ... –