JAvaでVector 2 D配列を作成して1 D Vectorを追加する問題
//
HSSFWorkbook workbook = new HSSFWorkbook(new FileInputStream(file));
//
HSSFSheet sheet = workbook.getSheetAt(0);
HSSFRow row;
//
int rows = sheet.getPhysicalNumberOfRows();
Vector tabletmp = new Vector<>();
Vector> tableAllData = new Vector<>();
for (int r=0; r
このコードの機能は、excelテーブルを読み取り、2 D配列tableAllData変数にテーブルの内容を追加することです.
エラーはないように見えますが、実際に実行してからtableAllDataのデータがすべて空であることに気づきました.私には理解できない.その後、私は本をインストールする方法でtabletmp変数の宣言をループに入れてから問題を解決しました.コードは次のとおりです.
//
HSSFWorkbook workbook = new HSSFWorkbook(new FileInputStream(file));
//
HSSFSheet sheet = workbook.getSheetAt(0);
HSSFRow row;
//
int rows = sheet.getPhysicalNumberOfRows();
for (int r=0; r tabletmp = new Vector<>();
if(row != null){
int cells = row.getPhysicalNumberOfCells();
// r *****************
for(short c=0; c
考えてみると、私はやっとなぜか分かった.tableAllData.add(tablettmp)このコードはtabletmp変数の参照、つまりCで言うポインタを追加しただけです.tableAllDataに格納されているデータとtablettmpに格納されているデータは同じアドレスユニット内にある.次のコードtabletmp.removeAllElements()tablettmp内のデータを空にすると、tableAllData変数が指す配列も空になります.