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

标签 java for-loop substring

我正在尝试制作一个计算器应用程序,并且我有一个用于输入最终方程的字符串。 “983+388+12” 我的解决方法是首先确定运算符(operator)在哪里。之后,我前后循环尝试找到这两个数字,然后将它们相加。所以我会找到加号然后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;
        }
    }

我没有收到任何作为 nextNumber 值返回的内容

最佳答案

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

此外,为了避免只找到 38,请更正您的 substring 调用,其中结束索引是独占

String nextNumber = string.substring(plus + 1, i);

关于java - 无法在for循环中找到Java子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34639147/

相关文章:

java - 如何使用 Synopsys detect 扫描 Java Maven 项目

java - 无法加载FSImage文件! ||怎么解决

php - Javascript 函数仅从 PHP for 循环输出第一个复选框的值

javascript - 为什么使用 "for...in"进行数组迭代是一个坏主意?

java - java中子字符串索引越界

java - Apache 使用 modjk 作为 WordPress 和 Tomcat 的代理

java - 下载宠物护理应用程序,帮助运行它

ios - 字符串的大写 NSArray?

javascript - 使用jQuery从字符串中获取倒数第二个字符位置

sql - Where 子句中的子串