簡體   English   中英

無法在for循環中找到Java子字符串

[英]Can't locate Java substring in for loop

我正在嘗試制作一個計算器應用程序,並且輸入了用於輸入最終方程式的字符串。 我要解決的“ 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;
        }
    }

我沒有得到任何返回值作為nextNumber的值

在第一個循環中找到+時,就不會停止掃描字符串。 這導致plus標記的最后位置+ ,這是388后和12前的第二循環永遠不會找到一個+-最后經過+ ,所以永遠印什么。 找到第一個+break循環。

另外,為避免只找到38 ,請更正您的substring調用,其中結尾索引為Exclusive

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

嘗試僅使用一個循環,請參見下文(工作示例)。 我沒有將任何東西分解成較小的方法。

public static void main(String[] args) {
    String string="983+388+12";
    String numberStr="0";
    int lastSignPos = 0;
    int signPos=0;
    char sign = '+';
    int total=0;

    //locating Plus symbol
    for(int i=0; i < string.length(); i++) {
        if(string.charAt(i)=='+' || string.charAt(i)=='-') {
            lastSignPos = signPos;
            signPos = i;
            numberStr = "0";

            if (lastSignPos == 0){
                // first number in series
                numberStr = string.substring(0,signPos);
            } else {
                numberStr = string.substring(lastSignPos + 1, signPos); 
            }

            sign = '+';
            if (string.charAt(lastSignPos)=='-'){
                sign = '-';
            }

            total += Integer.parseInt(sign + numberStr);
        }
    }

    // take care last number
    numberStr = string.substring(signPos+1);
    sign = '+';
    if (string.charAt(signPos)=='-'){
        sign = '-';
    }

    total += Integer.parseInt(sign + numberStr);

    System.out.println(total);
}

您可以嘗試這樣的事情:

String example = "123+456+678";
String delim = "+";
StringTokenizer st = new StringTokenizer(example,delim); 
while (st.hasMoreElements()) {
    System.out.println("StringTokenizer Output: " + st.nextElement());
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM