簡體   English   中英

如何跳到Java中的下一個字符

[英]How to skip to next character in Java

我正在開發一個將前綴轉換為后綴表達式的程序。 但是,當表達式中出現意外空格時,例如“$+-ABC+DE F”而不是“$+-ABC+D-EF”,程序將無法正常運行。 如何編寫跳到下一個字符並忽略空格,嘗試使用布爾 isBlank 方法通過 if else 語句來完成。

public class PrefixConverter{

    // Checks if character is an operator
    public boolean isOperator(char c){
        switch (c){
            case '+':
            case '-':
            case'*':
            case'/':
            case'$':
                return true;
        }
        return false;
    }

    // Ignores white space
    public boolean isBlank(char c){
        switch (c){
        case ' ':
        return true;
        }
        return false;
    }

    // Method to convert Prefix expression to Postfix expression
    public String preToPost (String prefix_exp){

        // Create a new stack with length of the prefix string
        int size = prefix_exp.length();
        Stack expression_stack = new Stack (size);

        // Read expression from right to left
        for (int i = size -1; i >=0 ; i-- ){

            if (isOperator(prefix_exp.charAt(i))){

                // Pop two operands from the stack
                String op1 = expression_stack.peek();
                expression_stack.pop();
                String op2 = expression_stack.peek();
                expression_stack.pop();

                // Concatenate the operands and the operator
                String temp = op1 + op2 + prefix_exp.charAt(i);

                // Push the result back onto the stack
                expression_stack.push(temp);
            }

            else if(isBlank(prefix_exp.charAt(i))){
                // Skip to next character
            }

            // If the symbol is an operand
            else {
                // Push the operand onto the stack
                expression_stack.push(prefix_exp.charAt(i) + "");
            }
        }

        return expression_stack.peek();
    }
}

只需使用continue語句跳到 for 循環的末尾。 這將觸發循環與下一個字符一起運行。 但是由於您的代碼的其余部分無論如何都在 if 語句中,因此您的代碼應該不做任何事情而表現良好。

...
else if(isBlank(prefix_exp.charAt(i))){
    // Skip to next character
    continue;
}

另請參閱https://docs.oracle.com/javase/tutorial/java/nutsandbolts/branch.html

一種方法是寫一個continue; 在這個 else if() 中:

        else if(isBlank(prefix_exp.charAt(i))){
            // Skip to next character
            continue;
        }

continue將簡單地移動到循環的下一次迭代

但是,如果您不需要空格,則可以通過執行以下操作從開頭的 prefix_exp 字符串中刪除它們:

prefix_exp = prefix_exp.replaceAll("\\s", "");

只需確保在調用字符串的 .length() 之前執行 replaceAll,因為大小會發生變化。

暫無
暫無

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

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