【问题标题】:Method declaration in javajava中的方法声明
【发布时间】:2015-01-24 16:41:48
【问题描述】:

我有一个关于这段代码的问题,你可以在一些方法中看到有返回的 cmets,那是因为我认为我必须使用返回方法而不是 void 方法。我的老师告诉我将它们转换为 void 类,但是修改字段变量的方法不是应该返回一些东西吗?我很怀疑,因为有时我的老师似乎对编程不太了解或有一些疑问,所以提前感谢您的帮助。

公共类 ArraysClass {

private int[] array;
private int arrayLength;

public ArraysClass() {
    setArrayLength();
    array = new int[arrayLength];
}

public int setArrayLength() {
    Scanner scanner = new Scanner(System.in);
    System.out.println("Enter a number to set the length of the array:");
    arrayLength = scanner.nextInt();
    System.out.println();
    return arrayLength;

}

public void fillArray() {
    Scanner scanner = new Scanner(System.in);

    for (int i = 0; i < arrayLength; i++) {
        System.out.println("Type a number to fill position " + i);
        array[i] = scanner.nextInt();
    }
    // return array;
    System.out.println();
}

public void findNumber() {
    Scanner scanner = new Scanner(System.in);

    int tofind, position;
    System.out.println("Enter a number to search it in the array:");
    tofind = scanner.nextInt();
    position = Arrays.binarySearch(array, tofind);
    if (position < 0) {
        System.out.println("We did not find your number.");
    } else {
        System.out.println("The number you typed is in the next position:  " + position);
    }
    System.out.println();
}

public void fillMethod() {
    Scanner scanner = new Scanner(System.in);

    int tofill;
    System.out.println("Enter a number to fill the entire array with:");
    tofill = scanner.nextInt();
    Arrays.fill(array, tofill);
    System.out.println();
    //return array;
}

public void Sortmethod() {
    Arrays.sort(array);
    //return array;
}

private void showArray() {
    System.out.println("Showing the array...");
    for (int i = 0; i < arrayLength; i++) {
        System.out.println(array[i]);
    }
    System.out.println();
}

public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    ArraysClass arrayobj = new ArraysClass();
    int choose;
    do {
        do {
            System.out.println("1-Fill the array");
            System.out.println("2-Find a number in the array");
            System.out.println("3-Fill the entire array with a number");
            System.out.println("4-Sort the array");
            System.out.println("5-Show the array");
            System.out.println("6-Exit");
            System.out.println("Which one do you want to use?:");
            choose = scanner.nextInt();
        } while (choose < 1 && choose > 6);
        switch (choose) {
            case 1:
                arrayobj.fillArray();
                break;
            case 2:
                arrayobj.findNumber();
                break;
            case 3:
                arrayobj.fillMethod();
                break;
            case 4:
                arrayobj.Sortmethod();
                break;
            case 5:
                arrayobj.showArray();
                break;
            case 6:
                break;
        }

    } while (choose != 6);

}

}

【问题讨论】:

    标签: return void


    【解决方案1】:

    一般来说,一个方法应该return 一些东西,如果你需要它的价值。这是一些程序员使用returnboolean 的一种方法,即使是用于成功或失败的只做方法或int 用于状态代码。我不遵循这些方法。当我实现一个方法时,我总是问自己我想如何使用那个方法。如果我需要它的值,那么它将具有它的类型。否则,它将是void。让我们看看你的方法:

    setArrayLength:一般来说,从这个名字我希望你传递一个int给它,表示长度和方法是void。这对于 setter 来说很常见,但是在这里您正在读取方法中的实际值,这与具有 int 参数相比明显较差,因为如果您想使用一个值设置数组 length,您的方法将毫无用处不从控制台读取。

    fillArray:我希望这是void,所以我同意它的声明,但同样,阅读部分不应该在这里。

    findNumber:应该获取要查找的数字作为参数并返回一个int,表示它的索引,如果没有找到-1

    fillMethod:应该是void,应该有一个int参数,代表用来填充数组的值。

    sortMethod:好的,也许return 是结果数组,但取决于您的需要。

    showArray:我希望那里有一个PrintStream,你不一定会输出到 System.out

    一般错误:您将方法与输入/输出操作混合到控制台,这样代码不够通用。

    【讨论】:

    • 很抱歉,您将方法与输入/输出操作混合是什么意思?不是很懂
    • 例如在您的 fillArray 中:Scannerscanner = new Scanner(System.in);您如何提前知道您将始终从 System.in 中读取值?你想为 array.length 调用什么?你不能这样做。您的代码假定您将始终从控制台读取值并将值写入控制台。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-09-18
    • 1970-01-01
    • 2012-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多