java substring返回空

时间:2016-12-13 04:22:05

标签: java string substring

我试图获取字符串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

1 个答案:

答案 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