我的问题最好解决一个全局数组变量,比如int []。数组的大小来自标准输入。现在,我的构造函数需要初始化数组并且需要知道大小。同样在主要方法中,我应该只调用 Service.method(),而不是自己调用 method()。问题变成了,“我不应该在 main() 中单独调用 prompt() 来收集数组大小。此外,在提示用户提供数组大小之前,我无法创建类实例。public class Class //variable int[] var; //constructor public Class(int size) { var = new int[size]; } public int prompt() { Scanner input = new Scanner( System.in ); return input.nextInt(); } public static void main(String[] args) { //should not write //prompt() //i don't know the size, can't call constructor }}在实践中,这可以通过在 main() 中实现 prompt() 来解决,而不是在它自己的方法中。这是好习惯吗?这个问题是否有另一种惯用的解决方案?此外,列表对于这个程序的目的来说真的很不方便,如果可以的话,我想避免使用这些。
1 回答

开满天机
TA贡献1786条经验 获得超13个赞
这可以通过实现prompt()within来完成main(),但另一种解决方案是 make prompt() static,如下所示:
public static int prompt()
{
Scanner scanner = new Scanner(System.in);
return scanner.nextInt();
}
这样做是为了让您可以使用Class.prompt()而不需要 的实例来调用它Class,并且它能够成为静态方法,因为它不依赖于 的实例中的任何数据Class。然后它成为整个类的一部分,而不是类的一个实例。实现上述内容,您的用法将如下所示:
public static void main(String[] args)
{
//Ask the size.
int size = Class.prompt();
//Create the class with the size asked for above.
Class instance = new Class(size);
}
我建议您查看Java 类成员文档。
添加回答
举报
0/150
提交
取消