import acm.program.*;
import java.util.*;
public class ReverseArrayList extends ConsoleProgram {
public void run() {
println("This program reverses the elements in an ArrayList.");
println("Use 0 to signal the end of the list.");
ArrayList<Integer> list = readArrayList();
reverseArrayList(list);
printArrayList(list);
}
/* Reads the data into the list */
private ArrayList<Integer> readArrayList() {
ArrayList<Integer> list = new ArrayList<Integer>();
while (true) {
int value = readInt(" ? ");
if (value == 0) break;
list.add(value);
}
return list;
}
我不明白以下代码:
ArrayList<Integer> list = readArrayList();
我不明白为什么我不能做以下事情:
list.getInput();
为什么我需要使ArrayList等于该方法,这让我感到困惑,因为现在我不确定每当我想在java中调用一个方法时需要哪种方式
答案 0 :(得分:0)
您的代码显示方法getInput()
不会将 ArrayList 作为参数,而是返回它。
Arrlist=getInput()
正确的语法是,您将返回的 ArrayList 从getInput()
分配给Arrlist
。而另一方面,
Arrlist.getInput()
表示必须在 ArrayList Class 或其中一个超类中实现的方法,在您的情况下不是这样。我建议修改 OOP 概念。
答案 1 :(得分:0)
您可以传递它的一种方法是使用构造函数。我嘲笑了同样的工作代码。
import java.util.ArrayList;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
public class ArrayListExample {
ArrayList<Integer> ofNumbers;
public ArrayListExample() {
ofNumbers = new ArrayList<>();
createArray();
}
private void createArray(){
ofNumbers = IntStream.range(0, 10)
.boxed()
.collect(Collectors
.toCollection(ArrayList::new));
}
public ArrayList<Integer> getInput() {
return ofNumbers;
}
public void getArray() {
ArrayList<Integer> newList = new ArrayList<>(ofNumbers);
for (Integer num : newList) {
System.out.println(num);
}
}
}
我也同意安德鲁。坚持下去,通过多一点练习,这将成为你的第二天性。