在Java中使用类
我正在尝试使用我制作的一个类,但是当我调用该类时,它不起作用,我有点迷路了 错误出现在类调用和程序底部的Tall初始化时在Java中使用类,java,Java,我正在尝试使用我制作的一个类,但是当我调用该类时,它不起作用,我有点迷路了 错误出现在类调用和程序底部的Tall初始化时 package counter; public class Counter { private int value; public Counter(int intialValue){ value = intialValue; } private void count() { value = value + 1
package counter;
public class Counter {
private int value;
public Counter(int intialValue){
value = intialValue;
}
private void count() {
value = value + 1;
}
private void reset(){
value = 0;
}
public int getValue(){
return value;
}
Counter tally = new Counter();
tally.count();
}
tally.count()代码>应该在方法体中
public void someMethod() {
tally.count();
}
此外,编译器不会在类中包含默认的无参数构造函数,因为您已经编写了一个1-arg构造函数,所以必须向构造函数传递一个有效的int值
Counter tally = new Counter(someintval);
tally.count()代码>应该在方法体中
public void someMethod() {
tally.count();
}
此外,编译器不会在类中包含默认的无参数构造函数,因为您已经编写了一个1-arg构造函数,所以必须向构造函数传递一个有效的int值
Counter tally = new Counter(someintval);
在任何方法之外,这是错误
在任何方法之外,这是错误。您尚未将值传递到类的实例中:
Counter tally = new Counter(10);
或者可能是因为它不在一个
public static void main(String args)
方法体您尚未将值传递到类的实例中:
Counter tally = new Counter(10);
或者可能是因为它不在一个
public static void main(String args)
方法体所有Java语句都必须放入某种方法中
当前,最后两行不在方法中
Counter tally = new Counter();
tally.count();
试着这样做:
public class Counter {
... existing members ...
public static void main(String[] args) {
int initialValue = Integer.parseInt(args[0]);
Counter tally = new Counter(initialValue);
tally.count();
}
}
所有Java语句都必须放入某种方法中
当前,最后两行不在方法中
Counter tally = new Counter();
tally.count();
试着这样做:
public class Counter {
... existing members ...
public static void main(String[] args) {
int initialValue = Integer.parseInt(args[0]);
Counter tally = new Counter(initialValue);
tally.count();
}
}
从您到目前为止所展示的情况来看,类计数器似乎有一个计数器作为实例成员,因此您有一个无限回归试图实例化它。您没有给出错误,但我希望会出现StackOverflower错误
这假设它已编译,而这不应该发生,因为line-tally.count()不应该是合法的。类中唯一的内容是构造函数声明、方法声明、变量声明、初始值设定项块和嵌套的内部类声明。类底部的代码不算这些代码中的任何一个
此外,如果包含带参数的构造函数,那么如果要调用零参数构造函数,则必须显式创建一个。调用不存在的零参数构造函数的代码将导致另一个编译器错误
因此,您对构造函数有误解,并对在类中声明内容的含义感到困惑 从您目前所展示的内容来看,您的类计数器似乎有一个计数器作为实例成员,因此您有一个无限回归试图实例化它。您没有给出错误,但我希望会出现StackOverflower错误
这假设它已编译,而这不应该发生,因为line-tally.count()不应该是合法的。类中唯一的内容是构造函数声明、方法声明、变量声明、初始值设定项块和嵌套的内部类声明。类底部的代码不算这些代码中的任何一个
此外,如果包含带参数的构造函数,那么如果要调用零参数构造函数,则必须显式创建一个。调用不存在的零参数构造函数的代码将导致另一个编译器错误
因此,您对构造函数有误解,并对在类中声明内容的含义感到困惑 难道不应该有一个默认的构造函数吗?应该在什么时候调用最后两行?类中不能有这样的程序调用(它们不在方法中)您需要将该代码移动到启动时运行的主方法。@sgar91只有在您自己没有实现的情况下,您才能获得默认构造函数。在喜欢类之前,您应该先做一些“Hello World”键入练习。是否应该有默认构造函数?预计何时调用最后两行?类中不能有这样的程序调用(它们不在方法中)您需要将该代码移动到启动时运行的主方法。@sgar91只有在您自己没有实现的情况下,您才能获得默认构造函数。在喜欢类之前,您应该做一些“Hello World”类型的练习。请发表评论:)不要告诉我,你因为我不包括主要的……而否决了我:请投我一票,让反对票公平化,因为这是正确的answer@AlexWien谢谢,如果下一个投票者留下评论就好了……:)请下一个投票者发表评论……)不要告诉我,你因为我不包括主要的……而否决了我:请投我一票,让反对票公平化,因为这是正确的answer@AlexWien谢谢,如果投票人留下评论就好了:)实际上第一行没问题。计数器计数=新计数器(someintval)代码>这只是一个在线初始化)对。它将声明并初始化一个名为tally
的包保护实例变量。(但这几乎肯定不是我们想要的。)谢谢,我没有意识到Java在某些内容中需要一个main方法代码>这只是一个在线初始化)对。它将声明并初始化一个名为tally
的包保护实例变量。(但这几乎肯定不是我们想要的。)谢谢,我没有意识到Java在某些内容中需要一个main方法。第一行是好的(除了args,以及-正如Nathen指出的-无限递归),它是否是无限递归,取决于这两个无效行如何变得编译干净。第一行是好的(除了args,还有——正如Nathen指出的——无限递归)它是否是无限递归,取决于这两个无效行如何变得编译干净。