使用Math类进行计算

时间:2010-03-20 01:01:28

标签: java math

编写一个计算圆柱体表面积的JAVA程序,C = 2(πr2)+2πrh,其中r是半径,h是圆柱体的高度。允许用户输入半径和高度。将输出格式化为三位小数。使用常量PI和Math类中的方法pow()。

这是我到目前为止所做的,但它无法运行。任何人都可以帮助我吗?

import Java.util.Scanner;

public class Ex5 {

    public static void main (String[] args)
    {
      Scanner input=new Scanner(System.in);
      double radius,height,area;
      System.out.print("Please enter the radius of the Cylinder");
      radius = input.nextDouble();
      System.out.print("Please enter the height of the Cylinder");
      height = input.nextDouble();
      area = (4*Math.PI*radius)+2*Math.PIMath.POW(radius,2);
      System.out.println("The surface of the cylinder" + area);  
    }
}

5 个答案:

答案 0 :(得分:3)

如果这是源代码,那么这里有很多问题。

首先,该行:

2*Math.PIMath.POW

您忘记在PI和Math之间添加星号,因此编译器会将PIMath视为符号。 把括号括起来看这可能是件好事:

2*(Math.PI)*(Math.pow(radius, 2))

请注意Math.PI是静态引用的常量。另一方面,Math.pow是一种方法。

Java中的所有标识符都区分大小写。 Math.pow存在,Math.POW没有。

另外,我注意到您根本没有使用高度变量,因此您的公式计算不正确。

答案 1 :(得分:2)

这可能只是一个错字,但您似乎已经错误地复制了您的代码,或者输错了。你有这条线

area = (4*Math.PI*radius)+2*Math.PIMath.POW(radius,2);

请注意

部分
*Math.PIMath

你需要在PI和数学之间有一个*。

另外为了将来参考,您是否知道可以将此行添加到代码顶部:

import static java.lang.Math.*;

完成后,您可以将该行更改为:

area = (4*PI*radius)+2*PI*POW(radius,2);

然后,有些人可能不喜欢这样。但我认为它可以让更好的代码直接导入这样的几行。

答案 2 :(得分:1)

作为个人品味,我倾向于在相关陈述中加入parens。它使代码更具可读性,并可以在以后帮助调试。

我相信错误就在行中:

area = (4*Math.PI*radius)+2*Math.PIMath.POW(radius,2);

我会将其更改为:

area = (2 * Math.PI * Math.pow(radius, 2)) + (2 * Math.PI * radius * height);

原文中有一个拼写错误:Java区分大小写,因此Math.POW()在程序上与Math.pow()不同。而且,你不能通过连接命令来增加;相反,你必须在它们之间加一个星号。

这应该让它编译。<​​/ p>

答案 3 :(得分:1)

您可以通过替换Math.pow()来避免使用radius * radius。更好的是,因子2πr超出Cylinder区域的公式。例如, A =2πr 2 +2πrh=2πr(r + h)

double area = 2 * Math.PI * radius * (radius + height);

答案 4 :(得分:0)

最有可能的问题是代码中正在计算区域的部分。编程非常直观,因此当Math.PI和Math.POW(radius,2)之间没有空格时,会导致错误。对于人眼来说,它们看起来像两个不同的表达式,但编译器将其读作一个,因为它没有被告知。只需在Math.PI和Math.POW(radius,2)之间添加*即可解决您的问题。