java构造函数错误(无法将int传递给构造函数)

时间:2013-04-29 13:43:12

标签: java methods constructor integer stack

嗨,我是java新手,我一直在尝试将一个int表单main方法传递给另一个类中的构造函数,但是发生了某种错误。我无法理解我做错了什么。

使用main方法的类:

import java.util.Scanner;

public class _01 {


    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.print("Enter your : ");
        String name = input.nextLine();
        int size = name.length();

        //System.out.println(size);


        _02 process = new _02(size);

    }

}

具有构造函数的类:

public class _02 {

    int maxsize;
    int top;
    String arrayStack[];

    public void _02(int size) {

        maxsize = size;
        arrayStack = new String[maxsize];
        top = -1;
    }

    public void push(String... letters) {

        arrayStack[++top] = letters;

    }

    public String pop() {

        return arrayStack[top--];


    }
}

我收到错误消息:

  

线程“main”中的异常java.lang.Error:未解析的编译   问题:构造函数_02(int)未定义

     

在_01.main(_01.java:16)

4 个答案:

答案 0 :(得分:1)

那是因为您正在使用void。 Java认为这些是方法,而不是构造函数。首先停止给你的课程糟糕的名字。然后这样做:

public class Whatever {
   private Integer size;
   public Whatever(Integer size) {
      this.size = size;
      System.out.println("I am a constructor");
   };
};

示例

public class Article {
    private String title;
    private String content;
    private String author;
    private DateTime publishDate;

    public Article(String title, String content, String author, DateTime publishDate) {
        this.title = title;
        this.content = content;
        this.author = author;
        this.publishDate = publishDate;
    };

};

假设我们正在合作开展报纸项目。如果我阅读您的代码并查看_01,则对我来说没有任何意义。如果我看到Articletitlecontent等,我可以立即了解您所写的内容并随意使用。

如果两周后你回到自己的代码,你将无法理解_01的含义。和许多开发人员一样,你不会记得。甚至有一个关于它的笑话,通过评论完成。它是这样的:

/**
 * At the time of this writing, only God and I knew what I was doing.
 * Now, only God knows.
 * /

记住,代码很容易编写,但很难阅读。

答案 1 :(得分:1)

构造函数是一个没有返回类型的方法,因此构造函数声明应为:

public _02(int size)

一个好的做法是使用以下java样式指南,使用带有大写letrer的名称作为类名,例如Two

答案 2 :(得分:0)

构造函数没有返回类型。如果您想将void用作构造函数,请从public void _02(int size)中删除。

你的班级命名虽然有点奇怪......

答案 3 :(得分:0)

从public void _02(int size){...}

中删除'void'