私はこのエラーが発生しています:Java.lang.NumberFormatExceptionエラー
出力には、プログラムの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前にスペースや不要な文字を取り除くために呼ばれる整数を置きます。完璧に働いた。問題は、シリアルデバイスがとの出力を終了することでした。これらの2つは未読バッファに残り、次のデータが読み込まれると実際には何も存在しないため、Double.parseDouble(dataStr.trim());でエラーが発生します。
エラーが発生した理由は何ですか? –
@juergendに同意してください。さらに、このコードはコンパイルされません。どこでバッファを定義していますか? –
受け入れる方法?私はこれがとてもばかげていることを知っています... –