出于教育目的我试图理解如何通过另一个类(例如A类)访问列表的最大元素(最初在B类中)(在本例中是从Double列表中)。该列表用于不同的类中元素被添加到它(例如C类)。但是,当我向我的类A添加这样的东西来访问我的Max元素时,它似乎不起作用://得到帮助:)我通常得到的错误是noSuchElementException
只是A类的方法
void printMax () {
B b = new B();
Double result;
result = Collections.max(b.array);
System.out.println("MAX:" +result);
}
这是我的班级B:
public class B {
public ArrayList<Double> array;
B() {
array = new ArrayList<Double>();
}
public void doSomething() {
int i;
for(i = 0; i < array.size(); i++) {
System.out.println("Doubles:" +array.get(i));
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
new B().doSomething();
}
}
这是我的C类添加到我的ArrayList。
Class C {
public String line;
C () {
}
public void linePicker() {
B b = new B();
Scanner dScanner = new Scanner(line);
while (dScanner.hasNext()) {
if (dScanner.hasNextDouble()) {
b.array.add(dScanner.nextDouble());
break;
} else {
dScanner.next();
}
}
dScanner.close();
b.doSomething();
}
public static void main(String[] args) {
// TODO Auto-generated method stub
new C().linePicker();
}
}
答案 0 :(得分:0)
根据javadocs(http://docs.oracle.com/javase/7/docs/api/java/util/Collections.html#max(java.util.Collection,%20java.util.Comparator)),它会在Collection为空时抛出该异常。你初始化b.array,但在调用max()之前还没有添加它。