治愈logv空间 2023-04-11 19:13 采纳率: 40%
浏览 14

javajxl读取excel表格后读取后并用纯数组方式去重但是下标越界

javajxl读取excel表格后读取后并用纯数组方式去重但是下标越界!@#$%^&

  • 写回答

1条回答 默认 最新

  • qaqlong 2023-04-11 19:34
    关注

    数组越界错误通常是由于数组下标超出了数组的长度而引起的。如果使用纯数组方式实现去重操作,可能会出现数组越界的错误。可以采取以下的方式避免这个问题:

    获取 Excel 中数据的行数和列数,根据这个行列数创建对应的数组;
    在读取 Excel 单元格时,将数据转存到对应的数组中;
    在实现去重操作时,使用实际存储的数据长度作为数组长度,而不是 Excel 的行列数作为数组长度;
    在数组访问操作时,判断当前下标是否越界。
    以下是可能参考的Java代码实现:

    
    import java.io.File;
    import java.util.HashSet;
    import jxl.Cell;
    import jxl.Sheet;
    import jxl.Workbook;
    import jxl.read.biff.BiffException;
    
    public class ExcelUtil {
        public static void main(String[] args) {
            HashSet<String> set = new HashSet<>();
            int row = 0; // Excel行数
            int col = 0; // Excel列数
            String[][] array = null; // 数组
            
            try {
                Workbook book = Workbook.getWorkbook(new File("test.xls")); // 读取Excel
                Sheet sheet = book.getSheet(0); // 获取第一个工作表
                
                row = sheet.getRows();
                col = sheet.getColumns();
                array = new String[row][col]; // 创建对应行列数的数组
                
                // 读取数据存储到数组中
                for (int i = 0; i < row; i++) {
                    for (int j = 0; j < col; j++) {
                        Cell cell = sheet.getCell(j, i);
                        array[i][j] = cell.getContents();
                    }
                }
                
                // 基于数组进行去重操作
                String[] uniqueArray = new String[row * col];
                int uniqueCount = 0;
                for (int i = 0; i < row; i++) {
                    for (int j = 0; j < col; j++) {
                        if (set.add(array[i][j])) {
                            uniqueArray[uniqueCount] = array[i][j];
                            uniqueCount++;
                        }
                    }
                }
                // 输出去重后的数据
                for (int i = 0; i < uniqueCount; i++) {
                    System.out.println(uniqueArray[i]);
                }
    
                book.close();
            } catch (BiffException e) {
                e.printStackTrace();
            } catch
    
    
    评论

报告相同问题?

问题事件

  • 创建了问题 4月11日

悬赏问题

  • ¥15 如何实现H5在QQ平台上的二次分享卡片效果?
  • ¥15 python爬取bilibili校园招聘网站
  • ¥30 求解达问题(有红包)
  • ¥15 请解包一个pak文件
  • ¥15 不同系统编译兼容问题
  • ¥100 三相直流充电模块对数字电源芯片在物理上它必须具备哪些功能和性能?
  • ¥30 数字电源对DSP芯片的具体要求
  • ¥20 antv g6 折线边如何变为钝角
  • ¥30 如何在Matlab或Python中 设置饼图的高度
  • ¥15 nginx中的CORS策略应该如何配置