我的代码出了什么问题?为什么不计算面积 如果圆形作为形状,正确cirlce?每次都是 计算圆的面积等于0.Rest的代码正在工作 细
package constructor;
import java.util.Scanner;
class input{
float c_area;
int s_area,r_area;
input(int side1,String type)
{
if(type.equals("circle"))
{
c_area=3.14f*side1*side1;
}
else{
s_area=side1*side1;
}
}
input(int l,int b){
r_area=l*b;
}
void area(String select){
if(select.equals("cirlce"))
{
System.out.println("Area is: "+c_area);
}
else if(select.equals("square")){
System.out.println("Area is: "+s_area);
}
else
{
System.out.println("Area is:"+r_area);
}
}
};
public class shape {
public static void main(String[] args) {
String name;
char ch;
Scanner obj=new Scanner(System.in);
do{
System.out.print("ENTER THE SHAPE TYPE:");
name=obj.next();
if(name.equals("circle"))
{
int radius;
System.out.print("Enter the radius: ");
radius=obj.nextInt();
input a=new input(radius,name);
a.area(name);
}
else if(name.equals("rectangle"))
{
int len,bre;
System.out.print("Enter LENGTH & BREADTH: ");
len=obj.nextInt();
bre=obj.nextInt();
input x=new input(len,bre);
x.area(name);
}
else if(name.equals("square"))
{
int side;
System.out.print("Enter side: ");
side=obj.nextInt();
input x=new input(side,name);
x.area(name);
}
System.out.println("continue: Y or N:");
ch=obj.next().charAt(0);
}while(ch=='y' || ch=='Y');
}
}
我的代码出了什么问题?为什么不计算面积 如果圆形作为形状,正确cirlce?每次都是 计算圆的面积等于0.Rest的代码正在工作 细
答案 0 :(得分:2)
问题在于输入类中的这段代码:
if(type.equals("circle"))
{float c_area;
c_area=3.14f*side1*side1;
}
如果将c_area设为局部变量而不是实例变量,则在内部声明c_area,而不是试试这个
if(type.equals("circle"))
{
this.c_area=3.14f*side1*side1;
}
希望有所帮助......
答案 1 :(得分:0)
对所有人来说,使用“Math.PI”只需要3.14f就可以更准确;
在我的Oppinoin中,您应该使用静态方法来计算“c_area”(使用Parametes(半径,类型)和imedietey返回该值。 我没有看到创建对象的需要,因此您可以删除您的构造函数(因为以后不需要使用此对象。
如果这是你的整个coode我个人只是创建一个方法来计算区域..而且只是不要使用另一个类
答案 2 :(得分:0)
他的程序非常好,没有编码错误。
唯一的问题是空区域中存在拼写错误(String select){}方法
if(select.equals("cirlce"))
应为if(select.equals("circle"))
圆圈拼写错误。
答案 3 :(得分:-1)
看看这两行:
float c_area;
c_area=3.14f*side1*side1;
当您在类范围声明中已经有一个以相同方式命名的变量时,您在构造函数中声明了一个名为c_area
的变量。因此编译器会忽略类级变量,而是计算构造函数级变量。当然,类级变量默认不会改变并保持为零。只需从构造函数中删除float c_area;
即可,
注意:如果您是Java新手,您应该知道它遵循某些代码约定。您应该使用UpperCase样式命名您的类,并且您的变量名称应该是camelCased