我想檢查并驗(yàn)證 ArrayList 中的所有內(nèi)容是否與 String 變量的值相似。如果任何值不相似,則打印索引號(hào)并顯示錯(cuò)誤消息(索引 2 處的值與 expectedName 變量的值不匹配)。在我運(yùn)行下面的代碼后,它會(huì)打印所有三個(gè)索引和錯(cuò)誤消息,它不會(huì)只打印索引號(hào) 1。請(qǐng)注意,這里我從 CSV 文件中獲取數(shù)據(jù),將其放入數(shù)組列表中,然后進(jìn)行驗(yàn)證它針對(duì) String 變量中的預(yù)期數(shù)據(jù)。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); } }
1 回答

紫衣仙女
TA貢獻(xiàn)1839條經(jīng)驗(yàn) 獲得超15個(gè)贊
不要使用==
或!=
進(jìn)行字符串比較。==
檢查兩個(gè)字符串的引用相等性而不是值的相等性。請(qǐng)改用該.equals()
方法。
將您的 if 條件更改為if (!actualVideo2DurationList.get(i).equals(expectedVideo2Duration))
添加回答
舉報(bào)
0/150
提交
取消