私は文字列txtの部分文字列を取得し、その文字列の別の部分を値に設定しようとしていますが、部分文字列のdouble値で電圧[t]を設定しようとすると、空の文字列エラーが発生しました。ここで私はエラーを取得していたコードの一部です:このエラーが発生してしまう理由java substringが空に戻る
if(txt.substring(0,1).equals("1")) {
//Voltage button pressed(S3)
//=====================================================================
text3.setText(txt.substring(1));
voltage[t] = (Double.parseDouble(text3.getText()));
}
誰もが知っていますか?どんな助けもありがとう。ありがとう!
編集:ここでは は、私が受けてる正確な例外です:
Caused by: java.lang.NumberFormatException: empty String
at sun.misc.FloatingDecimal.readJavaFormatString(Unknown Source)
at sun.misc.FloatingDecimal.parseDouble(Unknown Source)
at java.lang.Double.parseDouble(Unknown Source)
at UartApp$11.run(UartApp.java:728)
at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:135)
エラーがライン728
に発生する。また、ここで私はint型に変換するために使用して追加しているコードです"1"。マイクロコントローラはCでプログラムされている:あなたが提供するコードが完全で表現可能である
char *p, text[32];
int i = readADC(POT);
sprintf(text,"1%d", i);
p = text;
UartTxString(p); //Sends string out
'txt'が文字列' 1'であれば、 'if'文は真となり、' text3'は '1'に続く文字列、つまり空文字列に更新されます。だから、 'text3'が空ではないと思ったら、' txt'はあなたが思うものを含んでいません。 – Andreas
@shmoselうまくいけば '' 1 ''そうでなければエラーの理解は間違っている。 OP *が2番目の文字列の最初の桁の後に値を取ろうとすると* –
txt.substring(1)を出力しようとすると、正しい値がテキストボックスに表示されますが、私はそれを二重に解析する。 – TestyTest