乗算を処理するときに、括弧とアスタリスクをブール式に挿入するために使用される次のメソッドがあります。たとえば、 を入力するとA+B+AB
が得られA+B+(A*B)
ます。
ただし、素数 (アポストロフィ) も考慮する必要があります。次に、入出力の例をいくつか示します。
A'B'+CD
与えるべき(A'*B')+(C*D)
A'B'C'D'
与えるべき(A'*B'*C'*D')
(A+B)'+(C'D')
与えるべき(A+B)'+(C'*D')
次のコードを試しましたが、エラーがあるようです。何かご意見は?
public static String modify(String expression)
{
String temp = expression;
StringBuilder validated = new StringBuilder();
boolean inBrackets=false;
for(int idx=0; idx<temp.length()-1; idx++)
{
//no prime
if((Character.isLetter(temp.charAt(idx))) && (Character.isLetter(temp.charAt(idx+1))))
{
if(!inBrackets)
{
inBrackets = true;
validated.append("(");
}
validated.append(temp.substring(idx,idx+1));
validated.append("*");
}
//first prime
else if((Character.isLetter(temp.charAt(idx))) && (temp.charAt(idx+1)=='\'') && (Character.isLetter(temp.charAt(idx+2))))
{
if(!inBrackets)
{
inBrackets = true;
validated.append("(");
}
validated.append(temp.substring(idx,idx+2));
validated.append("*");
idx++;
}
//second prime
else if((Character.isLetter(temp.charAt(idx))) && (temp.charAt(idx+2)=='\'') && (Character.isLetter(temp.charAt(idx+1))))
{
if(!inBrackets)
{
inBrackets = true;
validated.append("(");
}
validated.append(temp.substring(idx,idx+1));
validated.append("*");
idx++;
}
else
{
validated.append(temp.substring(idx,idx+1));
if(inBrackets)
{
validated.append(")");
inBrackets=false;
}
}
}
validated.append(temp.substring(temp.length()-1));
if(inBrackets)
{
validated.append(")");
inBrackets=false;
}
return validated.toString();
}
どうぞよろしくお願いいたします。前もって感謝します!:)