打印多项式

时间:2014-03-23 23:07:02

标签: java

我正在尝试从给定数字打印多项式。 我做了下面的示例,但对于像100这样的内容,当我只需要1x^2+时,它会打印x^2。我正在寻找的是如何让它不打印+,同时摆脱1的系数。

编辑:我做到了,它完美打印。随意使用它。

private static String S_frumos(int poli) {
    String s = "";
    for (int i = 0; i < String.valueOf(poli).length(); i++) {
        int nr = Character.getNumericValue(S_GetCoefs(poli, i));
        if (nr != 0) {
            if (i == String.valueOf(poli).length() - 1) {
                s = s + nr;
            } else if (i == String.valueOf(poli).length() - 2) {
                if ((S_zero(poli, i + 1) == 1)) {
                    if (nr != 1) {
                        s = s + nr + "x";
                    } else {
                        s = s + "x";
                    }
                } else {
                    if (nr != 1) {
                        s = s + nr + "x" + "+";
                    } else {
                        s = s + "x" + "+";
                    }
                }
            } else if ((S_zero(poli, i + 1) == 1)) {
                if (nr != 1) { s = s + nr + "x^" + (String.valueOf(poli).length() - i - 1);}
                else  { s = s + "x^" + (String.valueOf(poli).length() - i - 1);}
            } else {
                if (nr != 1){ s = s + nr + "x^" + (String.valueOf(poli).length() - i - 1) + "+";}
                else { s = s + "x^" + (String.valueOf(poli).length() - i - 1) + "+";}
            }
        }
    }

    return s;
}
private static int S_GetCoefs(int poli, int x) {
    return String.valueOf(java.lang.Math.abs(poli)).charAt(x);
}

2 个答案:

答案 0 :(得分:1)

首先,将多项式存储在一个变量中并不是一个好主意,就好像你有超过9的系数一样,你会感到困惑。 一个更好的方法imo(不做多项式类)是将多项式存储在int / double数组中。

public static void main(String[] args)
{
  // To store the polynomial x^2, you could do the following:
  int[] poly = new int[3];
  poly[0] = 1;
  poly[1] = 0;
  poly[2] = 0;
  printPoly(poly);
}

// To print it:
private static void printPoly(int[] poly)
{
  String output = "";
  if (poly[0] != 0)
    output += poly[0] + "x^2"
  if (poly[1] != 0)
  {
    if (output.size() > 0)
      output += " + " + poly[1] + "^x";
    else
      output += poly[1] + "x";
  }
  if (poly[2] != 0)
  {
    if (output.size() > 0)
      output += " + " + poly[2];
    else
      output += poly[2];
  }
}

答案 1 :(得分:1)

要存储未知长度的东西......那么你仍然可以使用int / double数组,只是稍微复杂一点。

public static void main(String[] args)
{
  // Say the size is given in a command line argument.
  int coefficientNumber = Integer.parseInt(args[0]);

  int[] poly = new int[coefficientNumber];
  for (int i = 0; i < poly.length; i++)
  {
    poly[i] = 0;
  }
  // Set the highest coeffient to 1 (if there is 3 coefficients, this is coefficient
  // of x^2, if 4 coefficients, this is coefficient of x^3
  poly[0] = 1;
  printPoly(poly);
}

// To print a polynomial of unknown length.
// If the coefficient is 0, don't print it.
private static void printPoly(int[] poly)
{
  String output = "";
  for (int index = 0; index < poly.length; index++)
  {
    if (poly[index] != 0)
    {
      // If this is the first coefficient with a value
      if (output.length() == 0)
        output = poly[index] + "x^" + (poly.length - (index + 1));
      // Else if there is already some coefficient with values printed.
      else
        output += " + " + "x^" + (poly.length - (index + 1));
    } // if
  } // for
  System.out.println(output);
} // printPoly