我正在尝试制作一个计算器应用程序,并且我有一个用于输入最终方程的字符串。 “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/