我的代码的主要思想是,我想在找到“ c”后进行检查
A B C D
^
然后它将检查Arraylist中的上一个元素是否包含“ b”。如果包含“ b”,则将输出“ VALID”
请帮助我解决此问题。预先感谢。
public static void main(String[] args) {
try {
FileInputStream file = new FileInputStream(new File("C:XX"));
XSSFWorkbook wb = new XSSFWorkbook(file);
XSSFSheet sheet = wb.getSheetAt(0);
DataFormatter formatter = new DataFormatter();
Iterator<Row> rows = sheet.rowIterator();
while (rows.hasNext()) {
XSSFRow row = (XSSFRow) rows.next();
Iterator cells = row.cellIterator();
ArrayList<String> al = new ArrayList<String>();
while (cells.hasNext()) {
XSSFCell cell = (XSSFCell) cells.next();
String stringcell = formatter.formatCellValue(cell);
al.add(stringcell);
}
// row
ListIterator<String> listIterator = al.listIterator();
if (al.contains("c")) {
while (listIterator.hasPrevious()) {
String element = listIterator.previous();
if (element.contains("b")) {
System.out.println("VALID");
break;
}
}
}
System.out.println("");
}
} catch (Exception e) {
e.printStackTrace();
}
}
答案 0 :(得分:2)
不仅要跟踪先前看到的值:
ListIterator<String> listIterator = al.listIterator();
String element;
String prev = "";
while (listIterator.hasNext()) {
element = listIterator.next();
if (element.contains("c") && prev.contains("b")) {
System.out.println("VALID");
break;
}
prev = element;
}
注意:此答案假设您有一个字符串列表,您想在其中询问是否有任何字符串包含字母b
和c
的问题。相反,如果要检查列表是否包含整个字符串b
和c
,请使用上面@Eran的答案。
答案 1 :(得分:2)
您不需要ListIterator
。使用contains
代替indexOf
。如果“ c”的索引为正,则检查前一个索引的元素是否为“ b”。
int pos = al.indexOf ("c");
if (pos > 0) {
if (al.get(pos-1).equals("b")) {
System.out.println("VALID");
}
}