Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 构造函数错误-无法应用于给定类型_Java_Csv - Fatal编程技术网

Java 构造函数错误-无法应用于给定类型

Java 构造函数错误-无法应用于给定类型,java,csv,Java,Csv,我正在写一个CSV解析器,我几乎完成了,但我有一个返回方法的问题。代码几乎和这个网站上的一样,但我还是发现了错误 private static Book createBook(String[] metadata) { String name = metadata[0]; int price = Integer.parseInt(metadata[1]); String author = metadata[2]; //Create and return book

我正在写一个CSV解析器,我几乎完成了,但我有一个返回方法的问题。代码几乎和这个网站上的一样,但我还是发现了错误

private static Book createBook(String[] metadata) {
    String name = metadata[0];
    int price = Integer.parseInt(metadata[1]);
    String author = metadata[2];

    //Create and return book of this metadata
    return new Book(name, price, author);
}
我得到一个错误:

Error:(128, 16) java: constructor Book in class java.awt.print.Book cannot be applied to given types;
required: no arguments
found: java.lang.String,int,java.lang.String
reason: actual and formal argument lists differ in length 
我不确定是什么导致了这个错误,我已经处理这个问题好几个小时了。提前感谢。

证据:

  • 编译错误消息涉及
    java.awt.print.Book

  • 您的代码正在尝试创建一本
    如下:
    新书(名称、价格、作者)

  • 分析:这些参数对于
    java.awt.print.Book
    实例毫无意义。后者说:

    Book
    类提供文档的表示,其中页面可能具有不同的页面格式和页面绘制者。此类使用
    Pageable
    接口与
    PrinterJob
    交互

    因此,当您真正打算导入/使用自己的
    书籍
    类时,您似乎意外地将
    java.awt.print.Book
    导入到了类中。这可能是由于IDE中的一个不恰当的“自动更正”提示造成的

    解决方案:删除/替换伪造的进口声明。

    证据:

  • 编译错误消息涉及
    java.awt.print.Book

  • 您的代码正在尝试创建一本
    如下:
    新书(名称、价格、作者)

  • 分析:这些参数对于
    java.awt.print.Book
    实例毫无意义。后者说:

    Book
    类提供文档的表示,其中页面可能具有不同的页面格式和页面绘制者。此类使用
    Pageable
    接口与
    PrinterJob
    交互

    因此,当您真正打算导入/使用自己的
    书籍
    类时,您似乎意外地将
    java.awt.print.Book
    导入到了类中。这可能是由于IDE中的一个不恰当的“自动更正”提示造成的


    解决方案:删除/替换伪导入语句。

    错误的具体原因是,
    java.awt.print
    包中的
    Book
    类只有一个零参数构造函数,因此只能像这样实例化:

    Book b = new Book();
    
    这里有一些事情可能会不时发生。JDK API通常提供一些类,这些类可能听起来像是我们可以在项目中使用它们,但它们的名称往往有点误导性,或者所需的功能不可用

    如果是这种情况,您应该创建/使用自己的类

    假设您已经有一个与此类似的book类:

    public class Book
    {
    
      private final String name;
      private final int price;
      private final String author;
    
      public Book( String name, int price, String author )
      {
        this.name = name;
        this.price = price;
        this.author = author;
      }
    
      // Getter....
    }
    
    您必须为您的项目导入正确的

    您可以通过添加正确的导入语句来执行此操作:

    import all.my.packages.Book
    
    您可能遇到的另一个问题是,您是否希望使用自己版本的
    Book
    ,以及
    java.awt.print
    软件包中的版本。现在我们遇到名称冲突,您必须在使用时指定每个对象:

    public static void main( String[] args )
    {
    
      String author = "SomeAuthor";
      String name = "SomeBook";
      int price = 30;
    
      java.awt.print.Book awtBook = new java.awt.print.Book(); 
      playground.test.main.Book myBook = new playground.test.main.Book( name, price, author );
    
    }
    

    但这是大多数情况下您希望避免的。

    错误的具体原因是,
    java.awt.print
    包中的
    Book
    类只有一个零参数构造函数,因此只能像这样实例化:

    Book b = new Book();
    
    这里有一些事情可能会不时发生。JDK API通常提供一些类,这些类可能听起来像是我们可以在项目中使用它们,但它们的名称往往有点误导性,或者所需的功能不可用

    如果是这种情况,您应该创建/使用自己的类

    假设您已经有一个与此类似的book类:

    public class Book
    {
    
      private final String name;
      private final int price;
      private final String author;
    
      public Book( String name, int price, String author )
      {
        this.name = name;
        this.price = price;
        this.author = author;
      }
    
      // Getter....
    }
    
    您必须为您的项目导入正确的

    您可以通过添加正确的导入语句来执行此操作:

    import all.my.packages.Book
    
    您可能遇到的另一个问题是,您是否希望使用自己版本的
    Book
    ,以及
    java.awt.print
    软件包中的版本。现在我们遇到名称冲突,您必须在使用时指定每个对象:

    public static void main( String[] args )
    {
    
      String author = "SomeAuthor";
      String name = "SomeBook";
      int price = 30;
    
      java.awt.print.Book awtBook = new java.awt.print.Book(); 
      playground.test.main.Book myBook = new playground.test.main.Book( name, price, author );
    
    }
    

    但是这是你大多数时候都想避免的事情。

    你有一本构造函数
    公共书籍(stringv1,intv2,stringv3)
    你能把你的书贴出来吗class@notyou另一条路在附近。他正在传递3个参数,但是
    java.awt.print.Book
    有一个零argument构造函数。@不,你是在我的评论发布后看到的。但是OP:您使用
    java.awt.print
    包中的
    Book
    类有什么具体原因吗?如果是这样的话,您就不能像尝试导入
    java.awt.print.Book
    那样实例化一次,因为您显然想使用其他的Book类。删除import语句并导入正确的类。您是否有构造函数
    public Book(stringv1、intv2、stringv3)
    可以发布您的书吗class@notyou另一条路在附近。他正在传递3个参数,但是
    java.awt.print.Book
    有一个零argument构造函数。@不,你是在我的评论发布后看到的。但是OP:您使用
    java.awt.print
    包中的
    Book
    类有什么具体原因吗?如果是这样的话,您就不能像尝试导入
    java.awt.print.Book
    那样实例化一次,因为您显然想使用其他的Book类。删除导入语句并导入正确的类。