我对这段代码有疑问,你可以在某些方法中看到有返回的注释,这是因为我认为我必须使用return方法而不是void方法。我的老师告诉我将它们转换为空类,但是不是一种修改字段变量以返回某些东西的方法吗?我有点怀疑,因为有时候我的老师似乎对编程知之甚少或者有些怀疑,所以请事先感谢你的帮助。
public class 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);
}
}
答案 0 :(得分:0)
一般来说,如果你需要价值,方法应该return
。这是一些程序员使用return
boolean
的方法,即使是成功或失败的只做方法,也可以是int
的状态代码。我不遵循这些方法。当我实现一个方法时,我总是问自己,我想如何使用该方法。如果我需要一个值,那么它将具有它的类型。否则,它将是void
。让我们看看你的方法:
setArrayLength :通常,我希望您可以通过此名称向int
传递void
,表示长度和方法为int
。这对于setter来说非常常见,但是在这里你正在读取方法中的实际值,与具有length
参数相比,它明显较差,因为如果想要设置数组{{1},你的方法将毫无用处使用未从控制台读取的值。
fillArray :我希望这是void
,所以我同意它的声明,但同样,阅读部分不应该在这里。
findNumber :应该将数字作为参数找到并返回int
,表示其索引-1
,如果找不到。
fillMethod :应该是无效的,并且应该有一个int
参数,该参数表示用于填充数组的值。
sortMethod :好的,可能是return
生成的数组,但取决于您的需求。
showArray :我希望有PrintStream
,你不一定会输出到System.out
一般错误:您将方法与输入/输出操作混合到控制台,这种方式的代码不够通用。