2016-12-13 13 views
-2

私は文字列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 
+0

'txt'が文字列' 1'であれば、 'if'文は真となり、' text3'は '1'に続く文字列、つまり空文字列に更新されます。だから、 'text3'が空ではないと思ったら、' txt'はあなたが思うものを含んでいません。 – Andreas

+0

@shmoselうまくいけば '' 1 ''そうでなければエラーの理解は間違っている。 OP *が2番目の文字列の最初の桁の後に値を取ろうとすると* –

+1

txt.substring(1)を出力しようとすると、正しい値がテキストボックスに表示されますが、私はそれを二重に解析する。 – TestyTest

答えて

-1

場合、Double.parseDouble(...)txtが文字列"1"(何もない)の場合にだけ、空の文字列を示す例外をスローしていました。

"1"の倍数値を取得すると仮定すると、これを修正する方法はtext3.setText(txt.substring(1));text3.setText(txt.substring(0,1));に変更することです。

先に"1"の後に文字列内の何かの値を2倍にすると、コード内のどこかに問題が発生している可能性があります。 txt。もしそうなら、私たちが見ることができるようにそのコードを投稿することもできますか?

問題:


EDIT(私は何が起こっすることができることは、あなたがtxt"1"を付加するものではなく、代わりに誤って完全"1"txtの値を置き換えることだと思います)代わりにtext3である可能性があります。

これを試してください。

voltage[t] = (Double.parseDouble(txt.substring(1))); 

voltage[t] = (Double.parseDouble(text3.getText())); 

を交換EDIT#2:上記の交換は、問題を解決しなかった場合

txtが正確に文字列であることは事実である必要がありますこの範囲内の"1"(何もありません)。この問題は、'1'txtにどのように前置しているかにあります。

+0

同じエラーが引き続き発生します。 – TestyTest

+0

@TestyTestあなたが得ている正確な例外/エラーと関連するメッセージは何ですか?(できるだけここに引用してください) – Travis

+0

@TestyTestまた、変更を加えても同じ答えが得られたら、 'txt' **は文字列' '1 ''だけでなければなりません)の範囲内である。あなたは '' 1 ''を 'txt'にどのくらいprependingしていますか?そこに何かが起こっているかもしれません... – Travis

関連する問題