rb = Workbook.getWorkbook(is)在for里面截止到这句话就不循环了为什么?

InputStream is = null;
FileInputStream fn = null;
static String[]r1=null;
static String[]r2=null;
int cs = 0;
int rs = 0; 
Workbook rb=null;
public jxl(String path){
    this.path = path;
    demo();     
}

public void demo(){

    System.out.println("bb");
    try {

        fn = new FileInputStream(path);
        is = fn;
        System.out.println("cc");
        rb = Workbook.getWorkbook(is);
        System.out.println("dd");
        Sheet s = rb.getSheet(0);// 此处只读取第一个sheet内容
        System.out.println("ee");
        cs = s.getColumns();
        rs = s.getRows();

        System.out.println("cs:"+cs+",rs:"+rs);
        r1= new String[rs];
        r2= new String[rs];
        for(int i =0;i<rs;i++){     
            r1[i]=s.getCell(1,i).getContents();         
        }
        for(int i =0;i<rs;i++){     
            r2[i]=s.getCell(4,i).getContents();         
        }

    } catch (Exception e) {
        System.out.println(e.toString());
    }finally {
            try {
                fn.close();
                is.close();
                rb.close(); 
            } catch (IOException e) {
                // TODO 自动生成的 catch 块
                e.printStackTrace();
            }           
    }
    程序要循环demo  但是测试就到那句话就不在循环了,就解决办法

你的两个代码,第一个是打印第一行所有数据,第二个是打印第四行所有数据,这两个for完全可以合并成一个的啊。
如果我没理解错的话,你是想打印某一行的数据,那么for的边界就应该是列总数的,代码最后应该打印两个数组的信息,才能判断读取是否正确。
你的描述可能是进入异常分支的了,因为getCell(row,col)你调用1,i而,i的范围你用的是rs总行数,肯定错误,应该是cs总列数。

 for(int i =0;i<cs;i++){     
            r1[i]=s.getCell(1,i).getContents();  
                        r2[i]=s.getCell(4,i).getContents();         
        }
System.out.println("第一行所有数据:"+Arrays.toString(r1));
System.out.println("第四行所有数据:"+Arrays.toString(r2));