在Java中使用类

在Java中使用类,java,Java,我正在尝试使用我制作的一个类,但是当我调用该类时,它不起作用,我有点迷路了 错误出现在类调用和程序底部的Tall初始化时 package counter; public class Counter { private int value; public Counter(int intialValue){ value = intialValue; } private void count() { value = value + 1

我正在尝试使用我制作的一个类,但是当我调用该类时,它不起作用,我有点迷路了

错误出现在类调用和程序底部的Tall初始化时

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指出的——无限递归)它是否是无限递归,取决于这两个无效行如何变得编译干净。