无法在for循环中找到Java子字符串

Hus*_*rah 0 java for-loop substring

我正在尝试制作一个计算器应用程序,我输入的最终方程有一个字符串."983 + 388 + 12"我的解决方法是首先确定运营商的位置.在此之后,我向后和向前循环尝试找到2个数字,然后我添加它们.所以我会找到加号然后是983和388并添加它们.我在匹配与添加符号相关的上一个/下一个数字时遇到问题.

public static void main(String[] args)
{
    int plus=0;
    String string="983+388+12";

    //locating Plus symbol
    for(int i=0;i<string.length();i++)
    {
        if(string.charAt(i)=='+')
        {
            plus=i;
        }
    }

    //locating next number (should be 388)
    for(int i=plus+1;i<string.length();i++)
    {
        if(string.charAt(i)=='+' || string.charAt(i)=='-')
        {
            String nextNumber=string.substring(plus+1, i-1);
            System.out.println(nextNumber);
            break;
        }
    }
Run Code Online (Sandbox Code Playgroud)

我没有得到任何返回作为nextNumber的值

rge*_*man 5

当您+在第一个循环中找到时,您不会停止扫描字符串.这导致plus标记最后一个的位置,该位置+在388之后和12之前.第二个循环永远不会找到+-在最后一个之后+,因此没有打印任何内容.当你找到第一个+,break出了循环.

此外,为避免38被发现,请更正您的substring呼叫,其中结尾索引是独占的.

String nextNumber = string.substring(plus + 1, i);
Run Code Online (Sandbox Code Playgroud)