![](/img/trans.png)
[英]How to do conditional operation in java 8 stream to skip next stream operation?
[英]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.