2016-01-10 101 views
-4

使用java中的流查找三角形的區域和周長。編譯警告:使用或覆蓋棄用的API

在編譯如下程序顯示

注:triangle.java使用或覆蓋一個過時的API。 使用-Xlint:deprecation重新編譯以獲取詳細信息。

請在此程序中找到錯誤!

import java.io.*; 
class triangle 
{ 
    double s,h,area,perimeter; 

    void get()throws IOException 
    { 
     System.out.println("Enter value of side of an equilateral triangle"); 
     DataInputStream dis=new DataInputStream(System.in); 
     s=Double.parseDouble(dis.readLine()); 
     System.out.println("Enter height"); 
     h=Double.parseDouble(dis.readLine()); 
    } 
    void area() 
    { 
     area=0.5*s*h; 
    } 
    void perimeter() 
    { 
     perimeter=3*s; 
    } 
    void display() 
    { 
     System.out.println("Area="+area); 
     System.out.println("Perimeter="+perimeter); 
    } 
    public static void main(String args[])throws IOException 
    { 
     triangle t=new triangle(); 
     t.get(); 
     t.area(); 
     t.perimeter(); 
     t.display(); 
    } 
} 
+1

請參閱https://docs.oracle.com/javase/7/docs/api/java/io/DataInputStream.html#readLine() –

+1

您如何「重新編譯時使用-Xlint:棄用細節」? – ChiefTwoPencils

+0

使用-Xlint編譯它時的警告:棄用: – Vikraman

回答

1

當您彙集編譯器給您的所有信息時,顯然您的代碼「使用或覆蓋了棄用的API」。

正如您在最近的評論中所說的那樣,按照建議操作並將其他選項添加到命令行時,它會告訴您問題來自何處。

在這種情況下它是DataInputStream#readLine()

當然,你可以抑制警告,但該鏈接解釋說:

「這種方法不正確字節轉換爲字符作爲JDK 1.1開始,讀取文本行的首選方法是通過。 BufferedReader.readLine()方法。使用該 DataInputStream類讀取文本行的程序可以被轉換成使用 BufferedReader類,...」

這比忽略折舊和潛在的錯誤可能是更好的建議。

-1

您正在使用readline()和DataInputStream,現在在Java中不推薦使用它。沒有問題。這只是Java社區的警告,這種方法可能無法正常工作。您可以在使用get()方法之前使用

@SuppressWarnings("deprecation")

來抑制這些警告。