【发布时间】:2019-12-16 11:41:13
【问题描述】:
我想检查并验证 ArrayList 中的所有内容是否与 String 变量的值相似。如果任何值不相似,则要打印的索引号带有错误消息,例如(索引 2 处的值与预期名称变量的值不匹配)。 在我运行下面的代码后,它将打印所有三个索引以及错误消息,它不会只打印索引号 1。 请注意,这里我从 CSV 文件中获取数据,将其放入 arraylist,然后根据字符串变量中的预期数据对其进行验证。
import org.apache.commons.csv.CSVFormat;
import org.apache.commons.csv.CSVParser;
import org.apache.commons.csv.CSVRecord;
import java.io.IOException;
import java.io.Reader;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.ArrayList;
public class ValidateVideoDuration {
private static final String CSV_FILE_PATH = "C:\\Users\\videologs.csv";
public static void main(String[] args) throws IOException {
String expectedVideo1Duration = "00:00:30";
String expectedVideo2Duration = "00:00:10";
String expectedVideo3Duration = "00:00:16";
String actualVideo1Duration = "";
String actualVideo2Duration = "";
String actualVideo3Duration = "";
ArrayList<String> actualVideo1DurationList = new ArrayList<String>();
ArrayList<String> actualVideo2DurationList = new ArrayList<String>();
ArrayList<String> actualVideo3DurationList = new ArrayList<String>();
try (Reader reader = Files.newBufferedReader(Paths.get(CSV_FILE_PATH));
CSVParser csvParser = new CSVParser(reader,
CSVFormat.DEFAULT.withFirstRecordAsHeader().withIgnoreHeaderCase().withTrim());) {
for (CSVRecord csvRecord : csvParser) {
// Accessing values by Header names
actualVideo1Duration = csvRecord.get("Video 1 Duration");
actualVideo1DurationList.add(actualVideo1Duration);
actualVideo2Duration = csvRecord.get("Video 2 Duration");
actualVideo2DurationList.add(actualVideo2Duration);
actualVideo3Duration = csvRecord.get("Video 3 Duration");
actualVideo3DurationList.add(actualVideo3Duration);
}
}
for (int i = 0; i < actualVideo2DurationList.size(); i++) {
if (actualVideo2DurationList.get(i) != expectedVideo2Duration) {
System.out.println("Duration of Video 1 at index number " + Integer.toString(i)
+ " didn't match the expected duration");
}
}
我的 CSV 文件中的数据如下所示:
video 1 duration, video 2 duration, video 3 duration
00:00:30, 00:00:10, 00:00:16
00:00:30, 00:00:15, 00:00:15
00:00:25, 00:00:10, 00:00:16
【问题讨论】:
-
那么你的问题是什么?
-
尝试将 ArrayLists 存储在 ArrayList 中,这样 3 个持续时间就已经组合在一起了。
-
感谢 Christopher 检查我的代码。你能帮我怎么做吗?请注意,我需要 ArrayList 数据来自 CSV 文件,这是解决此问题的必要条件。
-
感谢 RisingSun 审核此代码。问题是代码末尾的 for 循环返回所有索引,但是它应该只返回索引号 2,其值为 00:00:25 与 String 变量的值不匹配是 00:00:30
标签: java string validation for-loop arraylist