编写一个计算圆柱体表面积的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);
}
}
答案 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)之间添加*即可解决您的问题。