在Java中为ArrayLIst使用for循环(蓝色J)?
基本上,我一直很难使用for循环来查找存储在类天文台arraylist中的最大地震震级。我得到一个错误,告诉我我的for循环中的变量“I”无法找到,因为该方法无法找到天文台记录的最大震级在Java中为ArrayLIst使用for循环(蓝色J)?,java,arrays,for-loop,arraylist,foreach,Java,Arrays,For Loop,Arraylist,Foreach,基本上,我一直很难使用for循环来查找存储在类天文台arraylist中的最大地震震级。我得到一个错误,告诉我我的for循环中的变量“I”无法找到,因为该方法无法找到天文台记录的最大震级 class Observatory { private String name; private String country; private int yearStarted; private int area; private int runningTotal; private ArrayList<E
class Observatory
{
private String name;
private String country;
private int yearStarted;
private int area;
private int runningTotal;
private ArrayList<Earthquake> earthquakes;
private ArrayList<String> observatories;
Scanner userInput = newScanner(System.in);
private double largestMag(ArrayList<Earthquake> earthquake, double magnitude)
{
if (earthquake == null || earthquake.isEmpty()){
return 0;
}
for (Earthquake quake : earthquake) {
if (earthquake.get(0) < earthquake.get(i)){
return earthquake.get(i);
}
if (earthquake.get(0) > earthquake.get(i)){
return earthquake.get(0);
}
}
}
}
在我的方法中,我不知道如何解决从数组列表中提取震级用于计算的问题。谢谢 您正在混合访问
列表中的项目的方法。使用增强的
for循环可以消除手动计数时可能出现的计数器变量。而是使用quake
变量,该变量按顺序设置为每个值:
Earthquake largest = quakes.get(0); // start with whatever's first
for(Earthquake quake: earthquakes) {
if(quake.getMagnitude() > largest.getMagnitude()) {
largest = quake;
}
}
还有一些其他问题:
- 对于方法参数,只使用
而不是List
。这允许使用您的代码的人发送任何类型的ArrayList
列表
- 不能使用
比较对象。但是,您可以实现
接口,并提供Comparable
方法来告诉您哪个地震震级更大。然后您可以只使用compareTo()
Collections.max(地震)
- 我不知道您试图在循环逻辑中做什么,但您不能只返回您看到的第一件事。如果需要执行顺序搜索,可以使用“迄今为止最大值”或“迄今为止最小值”变量,并查看每个项目,如果发现新的极值,则更新变量
列表中项目的方法。使用增强的
for循环可以消除手动计数时可能出现的计数器变量。而是使用quake
变量,该变量按顺序设置为每个值:
Earthquake largest = quakes.get(0); // start with whatever's first
for(Earthquake quake: earthquakes) {
if(quake.getMagnitude() > largest.getMagnitude()) {
largest = quake;
}
}
还有一些其他问题:
- 对于方法参数,只使用
而不是List
。这允许使用您的代码的人发送任何类型的ArrayList
列表
- 不能使用
比较对象。但是,您可以实现
接口,并提供Comparable
方法来告诉您哪个地震震级更大。然后您可以只使用compareTo()
Collections.max(地震)
- 我不知道您试图在循环逻辑中做什么,但您不能只返回您看到的第一件事。如果需要执行顺序搜索,可以使用“迄今为止最大值”或“迄今为止最小值”变量,并查看每个项目,如果发现新的极值,则更新变量
震级
使用浮点
?也许你可以对震级
使用浮点
?啊,那就更有意义了。我想做的是得到每一次地震的震级,如果在循环过程中遇到一次大于存储值的地震,它会用新的震级(最大震级)替换该值然后返回所有地震观测后的最大震级at@user3236854您的代码看起来可能与一些递归搜索混淆了,这些搜索可以用于二进制搜索,但对于线性搜索,只需依次遍历这些项。啊,好的,这更有意义。我想做的是得到每一次地震的震级,如果在循环过程中遇到一次大于存储值的地震,它会用新的震级(最大震级)替换该值然后返回所有地震观测后的最大震级at@user3236854您的代码看起来可能与一些递归搜索混淆了,这些搜索可以用于二进制搜索,但对于线性搜索,只需依次遍历这些项即可。