我正在创建一个程序,该程序的一部分接收到一个具有以下条件的表达式:
允许的字符:“1234567890+-*/()”——注意它们末尾的空格
必须平衡
以“(”和“)”开头和结尾
分隔符是每个运算符、操作数或/和括号之间的单个空格:
我已经完成了前两个条件,但我坚持第三个条件。
例子:
( 1 + ( ( 22 - 322 ) * 4 / 5 ) ) <<< 有效
( 1+ ( ( 22 - 322 ) * 4 / 5 ) ) <<< 无效
( 1 + (( 22 - 322 ) * 4 / 5 ) ) <<< 无效
( 1 + ( ( 22 - 322 )* 4 / 5 ) ) <<< 无效
这是我到目前为止所做的:
public static boolean isSSWS(String e) {
boolean valid = false;
int indexOfWS = 0;
Character preChar = '\0';
Character postChar = '\0';
while(!valid && (indexOfWS < e.length())) {
indexOfWS = e.indexOf(" ", indexOfWS + 1);
preChar = e.charAt(indexOfWS - 1);
postChar = e.charAt(indexOfWS + 1);
if(preChar == ' ' || postChar == ' ') {
return false;
}
}
return true;
}
isSSWS, is * S *eparated with * S *ingle * W *ite * S *pace
indexOfWS,空白索引