编译警告:使用或覆盖已弃用的API

时间:2016-01-10 04:05:32

标签: java

使用java中的流查找三角形的面积和周长。

在编译以下程序时显示

  

注意:triangle.java使用或覆盖已弃用的API。   使用-Xlint重新编译:弃用以获取详细信息。

请查看此计划中的错误!

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();
    }
}

2 个答案:

答案 0 :(得分:2)

当您汇总编译器提供给您的所有信息时,您可以清楚地知道您的代码使用或覆盖了已弃用的API。"

正如您在最近的评论中所说,当您按照建议执行操作并在命令行中添加其他选项时,它会告诉您问题的来源。

在这种情况下,DataInputStream#readLine()

当然,您可以取消警告但链接说明:

  

"此方法无法将字节正确转换为字符。从JDK开始   1.1,读取文本行的首选方法是通过BufferedReader.readLine()方法。使用的程序   DataInputStream类读取行可以转换为使用   BufferedReader类......"

这可能是比忽略弃用和潜在错误更好的建议。

答案 1 :(得分:-1)

您正在使用带有DataInputStream的readline(),现在已在Java中弃用。没问题。来自Java社区的警告只是这种方法可能无法正常工作。您可以使用

取消这些警告
@SuppressWarnings( "deprecation" )
在get()方法之前