- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试访问在同一类中的不同方法中创建的ArrayList
。扫描仪方法从文本文件中提取数据。文本文件数据显示如下:123 12 1 43,带换行符...
目前,我的方法可以提取数据,但在该方法结束后无法编译。我最初在同一方法中使用了整个代码,并且运行良好。但我想通过在此类中创建一个新方法来返回最大值,然后创建一个将访问此新方法的 tester
类。这是我现有的代码。或者是否有更好的解决方案。我洗耳恭听。
public class DataAnalyzer {
public DataAnalyzer(File data) throws FileNotFoundException
{
List<Integer> rawFileData = new ArrayList<>();
FileReader file = new FileReader("info.txt");
try (Scanner in = new Scanner(file)) {
while(in.hasNext())
{
rawFileData.add(in.nextInt());
}
}
}
public int getLargest(rawFileData){
int largest = rawFileData.get(0);
for (int i = 1; i < rawFileData.size(); i++){
if (rawFileData.get(i) > largest)
{
largest = rawFileData.get(i);
}
}
for (Integer element : rawFileData){
if (element == largest)
{
System.out.print("This is the Largest Value: ");
System.out.print(element);
}
}
}
}
最佳答案
您的主要问题在于您的方法声明。它需要一个类型参数:
public int getLargest(List<Integer> rawFileData)
注意List<Integer>
.
现在,Collections 中已经有一个方法了。实用类。您最好详细查看该链接 - 那里有很多有用的方法。从 Collection
获取最高元素的Object
具有自然顺序的(例如 Integer
)。例如
int largest = Collections.max(rawFileData)
所以你的方法可以简化为:
public int getLargest(List<Integer> rawFileData)
return Collections.max(rawFileData);
}
在开始编写代码之前,您需要更仔细地考虑您的逻辑,例如,您的第一个循环就很好:
int largest = rawFileData.get(0);
for (int i = 1; i < rawFileData.size(); i++){
if (rawFileData.get(i) > largest)
{
largest = rawFileData.get(i);
}
}
你所做的正是任何程序员都会做的。但是,然后,而不是返回 largest
当你找到它时,由于某种原因你会再次循环:
for (Integer element : rawFileData){
if (element == largest)
{
System.out.print("This is the Largest Value: ");
System.out.print(element);
}
}
问问自己这有什么作用?你有一个List
比如说,苹果。您查看每个苹果并进行比较 - 找到最大的苹果。您现在拥有 List
中最大的苹果。然后循环 List
再次寻找与您已经找到的苹果相匹配的苹果。为什么要这样做?
此外,你永远不会 return
从方法来看。您的方法被声明为返回 int
;但你永远不会这样做。
关于java - 使用新方法访问 ArrayList 时出现编译时错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25473976/
如果有人能为我分解它,让我能理解它,我会非常感激。我知道它用于通过 apply 方法创建新对象。 Function.prototype.new = function () { var args
新版本的HADOOP中有一个方法。http://hadoop.apache.org/docs/current/api/org/apache/hadoop/fs/FileSystem.html#conc
根据支持库变更日志和 Fragment 类文档 ( https://developer.android.com/reference/android/support/v4/app/Fragment.ht
根据支持库更改日志和 Fragment 类文档 (https://developer.android.com/reference/android/support/v4/app/Fragment.htm
执行Async BigJob() 的无限运行任务的正确方法是什么?并且可以根据要求停止 提示:我正在尝试学习 [一种] 新方法来更新我现有的策略。 我有一个简单的程序(测试程序),它有一个开始 和停止
我将解释我的想法:我使用 python 作为谷歌应用程序引擎 + js + css 主项目将存储在 src 文件夹下,如下所示:\src \app <--- 这里是 gae 的所有 python 应用
我是一名优秀的程序员,十分优秀!