【发布时间】:2019-04-08 19:57:02
【问题描述】:
我被困在 Java 编码作业上。我应该为现有程序创建三个方法(askInfo、copyInfo 和setArray),让用户将数字输入数组,然后组织和打印该数组。 AskInfo 接收数组作为参数,向用户请求索引值,并将输入数字的数量作为 int 返回。 CopyInfo 将值复制到一个长度为返回数字数量的新数组中,setArray 对数字进行排序。
我的问题是,根据分配,askInfo 应该只返回输入数字的数量。因此,它将用它打印的数组的值留在方法中,使copyInfo 无法检索这些值并将它们复制到第二个数组中。如果没有编辑主要方法的能力,你会如何建议我解决这个问题?
主要方法:
int[] tempArray = new int[100];
System.out.println("Type in numbers. Type zero to quit.");
int amountOfNumbers = askInfo(tempArray);
int[] realArray = new int[amountOfNumbers];
copyInfo(realArray, tempArray);
setArray(realArray);
printArray(realArray);
我的代码:
public static int askInfo (int[] tempArray) { //asks for numbers and assigns them to tempArray, returns the length of realArray
int count = 0;
Scanner reader = new Scanner(System.in);
for (int i =0;i<tempArray.length;i++){
System.out.print((i+1)+". number: ");
tempArray[i] = reader.nextInt();
count++;
if (tempArray[i] == 0) //stops asking for values if user inputs 0
return count;
}
return count;
}
public static int[] copyInfo (int[] realArray, int[] tempArray) { //copies tempArray's values to realArray
for (int i=0; i<realArray.length;i++){
realArray[i] = tempArray[i];
}
return realArray;
}
public static int[] setArray (int[] realArray) { //sorts realArray from largest value to smallest
for (int i=0;i<realArray.length;i++){
for (int j=i+1;j<realArray.length;j++){
if (realArray[i]<realArray[j]){
int tmp = realArray[i];
realArray[i] = realArray[j];
realArray[j] = tmp;
}
}
}
return realArray;
}
现在程序确实可以编译,但数组 realArray 和 tempArray 的值超出了 askInfo 方法为空。请记住,我无法编辑 main 方法 - 我只能编辑我编写的三个方法。
【问题讨论】:
-
你有能力编辑这些方法所属的类吗?如果是这样,您可以创建一个类变量并对其进行编辑。
-
1、可以使用
Arrays.sort(realArray)对数组进行排序。这将消除 setArray() 方法。 2、您可以使用方法clone()作为realArray = tempArray.clone()、realArray = Arrays.copyOf(tempArray, tempArray.length)、Array.Stream(...)或System.arraycopy(...) -
这个要求类似于上下文设计模式:stackoverflow.com/questions/771983/… 不是传递数组进行排列,而是传递一个包含排列数组的对象,允许您将对象保持在范围内需要并且有排列而不明确要求它被返回。
-
欢迎来到 Stack Overflow。我建议您阅读ericlippert.com/2014/03/05/how-to-debug-small-programs 以获取有关调试代码的一些提示。如果您仍然需要帮助,请edit您的问题,以便代码完整。如果您提供一个我们可以复制/粘贴并自己运行的完整代码示例,我们可以为您提供更好的帮助。
标签: java