-1

これは、「x^2+x^2+2x-x-25」のような同じ変数の合計係数の数学方程式変数の係数を「+1x^2+1x^2+2x-」に修正しようとする試みです。 1x-25"、合計を "2x^2+x-25" にします。別の方法で合計プロセスを実行したことに注意してください。

private static String fixCoeff(String equ)
{
    equ=equ.toLowerCase();//change equation variables to lower case
    equ=equ.trim();//remove white spaces
    String []characters={"a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"};
    int index=-1;
    String fixedCoeff="";
    for (int i = 0; i < characters.length; i++)
    {
        if(!equ.contains(characters[i]))
        {
            continue;
        }
        //if a not found in equ i++ 
        //if true execute this
        while(equ.indexOf(characters[i],++index)!=-1)
        {


            index=equ.indexOf(characters[i]);
            if(index==0)
            {
                fixedCoeff+="+1"+equ;
                equ=fixedCoeff;
                index=2;
                break;

            }
            else
            {

                if (equ.charAt(index-1)=='+'||equ.charAt(index-1)=='-')
                {
                    fixedCoeff=equ.substring(-1,index-1);
                    fixedCoeff+="1"+equ.substring(index-1,equ.length()-1);
                    equ=fixedCoeff;
                    index++;
                    break;
                }

            }

        //  if (index==equ.length()-1) {//if we found last element in equ is a variable
                //break;
            //}
        }//end while

    }//end for loop 


    return equ;

}//end fixCoeff

入力ケース:

  1. a
  2. バツ
  3. x^2
  4. x^2+x^2

出力ケース:

  1. +1a
  2. +1倍
  3. +1x^2
  4. +1x^2+1x^2
4

2 に答える 2

1

次のように使用すると、これをはるかに簡単に行うことができますString.replaceAll()

for (int i = 0; i < characters.length; i++)
{
    if(!equ.contains(characters[i]))
    {
        continue;
    }
    equ = equ.replaceAll(("(?<!\\d)" + characters[i]), ("1" + characters[i]));
}
if(!equ.startsWith("-") && !equ.startsWith("+"))
{
    equ = "+" + equ;
}

これにより、前に数字がない文字が 1x (または現在の文字が何であれ) に置き換えられます。これは、負の後読みで正規表現を使用して、文字の前に数字がないことを確認し、1 (文字) に置き換えます。

自己完結型の例を次に示します。

String line = "x-x^2+3x^3";
line = line.replaceAll("(?<!\\d)x", "1x");
System.out.println("" + line);

これは出力されます1x-1x^2+3x^3

于 2015-05-22T15:12:23.580 に答える