亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

java如何獲取上一行arraylist的某個單元格

java如何獲取上一行arraylist的某個單元格

搖曳的薔薇 2021-12-22 16:08:41
我有這樣的數組列表[111, 222, 333, 444, 555, 666, , ][1, 2, 3, 4, 5, 6, , ][11, 12, 13, 14, 15, 16, , ][a, s, d, f, g, h, , ]我想檢查它什么時候找到'h',它會檢查第一個單元格的前一行是否等于'11'到目前為止,我已經這樣做了DataFormatter formatter = new DataFormatter();        String val = null;        for (int rowNum = 0; rowNum < sheet.getLastRowNum() + 1; rowNum++) {            Row r = sheet.getRow(rowNum);            ArrayList<String> al = new ArrayList<String>();            for (int i = 0; i <= r.getLastCellNum() + 1; i++) {                Cell cell = r.getCell(i);                val = formatter.formatCellValue(cell);                al.add(val);            }for (int t = 0; t < al.size(); t++) {    if (al.get(t).equals("h") && al.get(t + 1).equals("") && al.get(t + 2).equals("")) {                    if (al.get(rowNum - 1) != null) {                        if (al.get(rowNum - 1).contains("11")) {                            System.out.println("valid");                            continue;                        } else {                            System.out.println("invalid");                            continue;                        }                    } else {                        System.out.println("empty cell not exist ");                        continue;                    }                }            }        }輸出 : invalid輸出:valid如果我也將“1”更改為“2”,但不是 3、4、5、6,則結果相同有人可以向我解釋一下嗎?
查看完整描述

1 回答

?
白豬掌柜的

TA貢獻1893條經驗 獲得超10個贊

首先你的數據結構不好。我建議你創建一個ArrayList<ArrayList<String>>來保存你的數據。將每一行放入一個 ArrayList,然后將 ArrayList 添加到主 ArrayList?,F在數據結構和你上面提到的一樣?;蛘吣梢赃x擇二元數組,例如String[][] arr = new String[10][];.


您將行ArrayList<String> al = new ArrayList<String>();放入for loop, 意味著在每個循環中,您創建一個新的 ArrayList al,因此al每個循環中的數據都是空的。如果要al保留所有數據,則需要ArrayList<String> al = new ArrayList<String>();移出循環。


對于您的代碼,when(al.get(t).equals("h") && al.get(t + 1).equals("") && al.get(t + 2).equals(""))為 true,rowNum 為 3,al 為[a, s, d, f, g, h, , ]al.get(rowNum - 1) 為“d”。


當(al.get(t).equals("16") && al.get(t + 1).equals("") && al.get(t + 2).equals(""))為真時,rowNum 為 2,al 為[11, 12, 13, 14, 15, 16, , ]al.get(rowNum -1) 為“12”。


此外,您不al.get(rowNum - 1).contains("11")應該使用 ,al.get(rowNum - 1).equals("11")而應該使用。


=================


for (int t = 0; t < mainArrayList.size(); t++) {

    ArrayList<String> row = mainArrayList.get(t);

    for (int i = 0; i < row.size(); i++) {

        if (row.get(i).equals("h") {

          // your code

        }

    }

}

row是工作表的每一行。您需要循環每一行以檢查每個字符串是否與“h”相等。


查看完整回答
反對 回復 2021-12-22
  • 1 回答
  • 0 關注
  • 296 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號