嗨,我是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)
答案 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
,则对我来说没有任何意义。如果我看到Article
,title
,content
等,我可以立即了解您所写的内容并随意使用。
如果两周后你回到自己的代码,你将无法理解_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'