我试图获取字符串txt的子字符串,然后将该字符串的另一部分设置为一个值,但每当我尝试使用子字符串的double值设置voltage [t]时,I&#39 ; m得到一个空字符串错误。以下是我收到错误的代码部分:
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 :(得分:-1)
如果您提供的代码是完整且可表示的,那么Double.parseDouble(...)
会抛出异常,指示空字符串,当且仅当txt
是字符串"1"
时(没有其他内容)。
假设您希望获得"1"
的双倍值,那么解决此问题的方法是将text3.setText(txt.substring(1));
更改为text3.setText(txt.substring(0,1));
。
如果您要做的是在前导"1"
之后获取字符串中任何内容的double值,那么我认为您的代码中的其他地方可能会出现问题 - 无论您在何处设置txt
的值。如果是这样,你可以发布那些代码,以便我们可以看看吗?
(我认为可能发生的事情是您打算将"1"
添加到txt
,但却意外地将txt
的值完全替换为"1"
)
编辑:
问题可能在于text3
。
试试这个。取代
voltage[t] = (Double.parseDouble(text3.getText()));
与
voltage[t] = (Double.parseDouble(txt.substring(1)));
编辑#2:
如果上述替换无法解决问题,则必须为真,txt
正是此范围内的字符串"1"
(并且没有其他内容)。问题可能在于您如何将'1'
添加到txt
。