2016-08-24 99 views
-3
public class Triangle 
{ 

    float length; //declared length as float 
    float breadth; //declared breadth as float 
    public static void main(String[] args) 
    { 
     Triangle Triangle1 = new Triangle(); 
     Triangle Triangle2 = new Triangle(); 

     float area; //declared area as float 

     Triangle1.length = 11; 
     Triangle1.breadth = 22; 
     Triangle2.breadth = 15; 
     Triangle2.length = 20; 

     area = 0.5 * Triangle1.length * Triangle1.breadth; 
     System.out.println("The area of Triangle is" + " " + area); 

     area = 0.5 * Triangle2.length * Triangle2.breadth; 
     System.out.println("The area of Triangle is" + " " + area); 

    } 
} 

我已经宣布该区域为浮动较早,我得到complie时间错误,当我改变它成双,我可以得到下面的输出。 需要知道为什么...?为什么我没有得到下面的代码需要解释的输出?

float area;

Error:(24, 49) java: incompatible types: possible lossy conversion from double to float 
Error:(27, 49) java: incompatible types: possible lossy conversion from double to float 
+0

错误是告诉你为什么用简单的英语。 –

+4

'double'是64位,'float'是32位。您将乘以两个64位数并尝试将结果存储在32位中。 –

+0

在15秒3个不同的正确答案^^ – mayha

回答

1

您的代码有几个错误。

  • 请保留命名约定。类从大写字母开始,变量不要。所以.. Triangle triangle1 = new Triangle()

  • 为了保留所有数据在float,您需要将float中的所有数字相乘。 0,5默认为double,具有比float更大的小数精度。有两种方法来解决这个问题:

使用Ff指标(我推荐一个大写)说,你与float工作。否则的Java unserstands它作为double

area = 0.5F * triangle1.length * triangle1.breadth; 

或铸所有resutl到float

area = (float) 0.5 * triangle1.length * triangle1.breadth; 
+0

我没有得到第一个评论 –

+0

我没有得到您的答复。你有什么不明白? –

+0

正如你所提到的,类以capitlal字母和用小写字母创建的对象开始。 –

1

在Java中的一样2.553默认号码是所以当你

area = 0.5 * Triangle1.length * Triangle1.breadth;

你正在做双*浮动*浮动。如果你想使用0.5作为浮动你需要数字后加字母˚F所以你的代码将是这样的:

area = 0.5f * Triangle1.length * Triangle1.breadth; 
-1

执行此操作。

public class Triangle 
{ 
    float length; //declared length as float 
    float breadth; //declared breadth as float 

    public static void main(String[] args) 
    { 

     Triangle Triangle1 = new Triangle(); 
     Triangle Triangle2 = new Triangle(); 

     float area; //declared area as float 

     Triangle1.length = 11; 
     Triangle1.breadth = 22; 
     Triangle2.breadth = 15; 
     Triangle2.length = 20; 

     area = (float)0.5 * Triangle1.length * Triangle1.breadth; 
     System.out.println("The area of Triangle is" + " " + area); 

     area = (float)0.5 * Triangle2.length * Triangle2.breadth; 
     System.out.println("The area of Triangle is" + " " + area); 
    } 
} 
0

你有两个选择:

  1. 浮点型变量的每一个初始化后添加f,像Triangle1.length = 11f;

因此,代码变为:

public class Triangle { 

float length; // declared length as float 
float breadth; // declared breadth as float 

public static void main(String[] args) { 

    Triangle Triangle1 = new Triangle(); 
    Triangle Triangle2 = new Triangle(); 

    float area; // declared area as float 

    Triangle1.length = 11f; 
    Triangle1.breadth = 22f; 
    Triangle2.breadth = 15f; 
    Triangle2.length = 20f; 

    area = 0.5f * Triangle1.length * Triangle1.breadth; 
    System.out.println("The area of Triangle is" + " " + area); 

    area = 0.5f * Triangle2.length * Triangle2.breadth; 
    System.out.println("The area of Triangle is" + " " + area); 

} 

}

  • 充分利用area可变double类型:
  • 您的代码从而变成:

    public class Triangle { 
    
    float length; // declared length as float 
    float breadth; // declared breadth as float 
    
    public static void main(String[] args) { 
    
        Triangle Triangle1 = new Triangle(); 
        Triangle Triangle2 = new Triangle(); 
    
        double area; // declared area as float 
    
        Triangle1.length = 11; 
        Triangle1.breadth = 22; 
        Triangle2.breadth = 15; 
        Triangle2.length = 20; 
    
        area = 0.5 * Triangle1.length * Triangle1.breadth; 
        System.out.println("The area of Triangle is" + " " + area); 
    
        area = 0.5 * Triangle2.length * Triangle2.breadth; 
        System.out.println("The area of Triangle is" + " " + area); 
    
    } 
    

    }

    希望它有帮助!

    相关问题