如何解决如果 Arraylist<String> 也包含数字,我该如何过滤掉它们?
ArrayList allRows 从 txt 文件导入值。该文件主要包含字符串,但有几行包含(仅)数字。我想过滤掉这些数字并将它们传递给 weightsOnly 数组列表。
我的代码不起作用,因为没有通过 for (int i=0; i<100; i++)
过滤任何值,即使 allRows 的索引 1,例如,等于 60。为什么我的代码无法过滤掉这些数字?我只需要将这些数字添加到单独的数组列表中。
public class UserInterface {
private ArrayList<String> allRows; //this ArrayList imports ALL the rows from the txt file
private ArrayList<String> weights;
public UserInterface (){
this.allRows=new ArrayList<>();
this.weights=new ArrayList<>();
}
public void start(String file) throws IOException {
Scanner scanner = new Scanner(system.in);
try (Scanner linescanner = new Scanner(Paths.get(file))){
while (linescanner.hasNextLine()){
String row = linescanner.nextLine();
this.allRows.add(row);
}
} finally {
process();
}
}
public void process(){
ArrayList<Integer> recipeWeights=new ArrayList<>();
for (int i=0; i<100; i++){
if (allRows.contains(i)){
recipeWeights.add(i);
}
}
}
}
解决方法
contains
还会检查数据的类型,
因此在我们的例子中,您必须将 int
值转换为 String
:
if (allRows.contains(String.valueOf(i))){
recipeWeights.add(i);
}
应该有效,如果每一行只包含数字
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。