2016-08-24 58 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); 
    
    } 
    

    }

    希望它有幫助!

    相關問題