构造函数和未知数组大小;主要方法中的提示(最佳实践)

我的问题最好解决一个全局数组变量,比如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() 来解决,而不是在它自己的方法中。这是好习惯吗?这个问题是否有另一种惯用的解决方案?


此外,列表对于这个程序的目的来说真的很不方便,如果可以的话,我想避免使用这些。


白衣非少年
浏览 103回答 1
1回答

开满天机

这可以通过实现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 类成员文档。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java