プログラムを作成していますが、プログラムの一部が次の条件の式を受け取ります。
許可された文字: "1234567890+-*/() " --それらの末尾のスペースに注意してください
バランスが取れている必要があります
「(」と「)」で始まり、「」で終わる
区切りは、各演算子、オペランド、または括弧の間の単一の空白です。
最初の 2 つの条件は完了しましたが、3 番目の条件で行き詰まっています。
例:
( 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 *separated with * S *ingle * W *ite * S *pace
indexOfWS、空白のインデックス