Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java-格式化双数据类型,获取错误_Java_Format_Printf - Fatal编程技术网

Java-格式化双数据类型,获取错误

Java-格式化双数据类型,获取错误,java,format,printf,Java,Format,Printf,这是我的家庭作业代码。我早就应该这样做了,我在这方面做得不太好,但我想努力克服我的错误和问题,以便在学校里做得更好;但无论如何: double x1, y1, x2, y2, x3, y3; // Three points for three vertices. // (x1, y1), (x2, y2), (x3, y3) Scanner input = new Scanner(System.in); // T

这是我的家庭作业代码。我早就应该这样做了,我在这方面做得不太好,但我想努力克服我的错误和问题,以便在学校里做得更好;但无论如何:

  double x1, y1, x2, y2, x3, y3; // Three points for three vertices. 
                                 // (x1, y1), (x2, y2), (x3, y3)

  Scanner input = new Scanner(System.in);

  // The program asks the user what the name of the triangle is. Then the program
  // asks the user for the cordinates of each point.
  System.out.print("Enter a three letter name for the triangle: ");
  String triangleName = input.next();
  System.out.print("Coordinates of vertex " + triangleName.substring(0,1).toUpperCase() + ":");
  x1 = input.nextDouble();
  y1 = input.nextDouble();
  System.out.print("Coordinates of vertex " + triangleName.substring(1,2).toUpperCase() + ":");
  x2 = input.nextDouble();
  y2 = input.nextDouble();
  System.out.print("Coordinates of vertex " + triangleName.substring(2,3).toUpperCase() + ":");
  x3 = input.nextDouble();
  y3 = input.nextDouble();

  double a, b, c; // These values will serve as the three side
                  // lengths between the points.

  // The program displays side lengths in this block.
  System.out.println("--- Side lengths ---");
  a = Math.sqrt(Math.pow(x2-x1, 2) + Math.pow(y2-y1, 2));
  System.out.printf(triangleName.substring(0,1).toUpperCase()
                      + triangleName.substring(1,2).toUpperCase() + ":"
                      + "%.3f", a);
  System.out.println();
  b = Math.sqrt(Math.pow(x3-x2, 2) + Math.pow(y3-y2, 2));
  System.out.printf(triangleName.substring(1,2).toUpperCase()
                       + triangleName.substring(2,3).toUpperCase() + ":"
                       + "%.3f", b);
  System.out.println();
  c = Math.sqrt(Math.pow(x3-x1, 2) + Math.pow(y3-y1, 2));
  System.out.printf(triangleName.substring(2,3).toUpperCase()
                       + triangleName.substring(0,1).toUpperCase() + ":"
                       + "%.3f", c);
  System.out.println();

  double perimeter, area, xCentroid, yCentroid, inRadius, inArea, semiPerimeter, triangleHeight, triangleBase;

  // The program displays other measures in this block.
  System.out.println("--- Other measures ---");
  perimeter = a + b + c;
  System.out.printf("Perimeter         = " + "%.3f", perimeter);
  System.out.println();
  triangleHeight = y3 - 0.1;
  triangleBase = x2 - x1;
  area = (triangleHeight * triangleBase) / 2;
  System.out.printf("Area              = " + "%.3f", area);
  System.out.println();
  xCentroid = (x1 + x2 + x3) / 3;
  yCentroid = (y1 + y2 + y3) / 3;
  System.out.printf("Centroid          = ( " + "%.3f", xCentroid + ", " + yCentroid + ")");
  System.out.println();
  semiPerimeter = 0.5 * perimeter;
  inRadius = area / semiPerimeter;
  System.out.format("Incircle radius   = " + "%.3f", inRadius);
  System.out.println();
  inArea = Math.PI * Math.pow(inRadius, 2);
  System.out.format("Incircle area     = " + "%.3f", inArea);
  System.out.println();
代码中的问题存在于分别格式化xCentroid和yCentroid值的行中。我收到一个错误,上面写着java.util.IllegalFormatConversionException:f!=java.lang.String。程序中的数学运行良好,也很有效。我已经删除了语句中的%.3f,看看我是否得到了正确的答案,我做到了。只是这种格式让我很生气。请回复,并提供帮助。我要起床一会儿,要有耐心

新代码已修复:

  System.out.print("Centroid          = ");
  System.out.print("(");
  System.out.printf("%.3f", xCentroid);
  System.out.print(", ");
  System.out.printf("%.3f", yCentroid);
  System.out.print(")");
  System.out.println();
在此代码中

System.out.printf("Centroid          = ( " + "%.3f", xCentroid + ", " 
                                                        + yCentroid + ")");
尤其是这个

xCentroid + ", " + yCentroid + ")"
不是一个数字,而是一个字符串

我猜你想要的是

System.out.printf("Centroid          = (%.3f)", xCentroid + yCentroid);

请在发布前将问题减少到最低限度。你发布的大部分代码都是无关的,而且你还没有给我们完整的exmaple,我们只能复制/粘贴/编译/运行。很抱歉。请记住,以备将来参考!谢谢你告诉我。我对这整件事还不熟悉。肯定会在这个更频繁,将更好地张贴代码。