日期:2014-05-20  浏览次数:20790 次

For循环跳出问题?
Java code
        String[] columns = [NAME,CLASS_ID];
        String[] columnsType=[VARCHAR2,INT];
        
        
        sqlEndbBuffer.append("create or replace table "+tableN+"( ");
        
        labela:
        for(int i=0;i<columns.length;i++){
            
            sqlEndbBuffer.append(columns[i]+" ");
            
            for(int j=0;j<columnsType.length;j++){
                
                sqlEndbBuffer.append(columnsType[j]);
                break labela;
            }
            if (i == columnsType.length - 1) {
                sqlEndbBuffer.append("");
            } else {
                sqlEndbBuffer.append(",");
            }
        }
        
        sqlEndbBuffer.append(" )");
        
        System.out.println("New SQL==="+sqlEndbBuffer.toString());



我要输出下面的语句,
New SQL===create or replace table dffdfdf( NAME VARCHAR2 ,CLASS_ID INT)
代码有点问题,帮看看,那个break好些没起作用?谢谢

------解决方案--------------------
break只能跳出当前循环吧,跳出后最外层的for循环还有继续的。
------解决方案--------------------
Java code


        String[] columns = [NAME,CLASS_ID];
        String[] columnsType=[VARCHAR2,INT];
        
        
        sqlEndbBuffer.append("create or replace table "+tableN+"( ");
        
        labela:
        for(int i=0;i<columns.length;i++){
            
            sqlEndbBuffer.append(columns[i]+" "+columnsType[i]);
            
           
            if (i == columns.length - 1) {
                sqlEndbBuffer.append("");
            } else {
                sqlEndbBuffer.append(",");
            }
        }
        
        sqlEndbBuffer.append(" )");
        
        System.out.println("New SQL==="+sqlEndbBuffer.toString());

------解决方案--------------------
int j=0;
labela:
for(int i=0;i<columns.length;i++){

sqlEndbBuffer.append(columns[i]+" ");
labelb:
for(int a=j;a<columnsType.length;a++){
sqlEndbBuffer.append(columnsType[a]);
j++;
break labelb;
}
if (i == columnsType.length - 1) {
sqlEndbBuffer.append("");
} else {
sqlEndbBuffer.append(",");
}
}
------解决方案--------------------
Java code

 String[] columns = [NAME,CLASS_ID];
        String[] columnsType=[VARCHAR2,INT];
        
        
        sqlEndbBuffer.append("create or replace table "+tableN+"( ");
        
        for(int i=0;i<columns.length;i++){
            
            sqlEndbBuffer.append(columns[i]+" ");
            
            for(int j=0;j<columnsType.length;j++){
                
                sqlEndbBuffer.append(columnsType[j]);
                break;
            }
            break;
            if (i == columnsType.length - 1) {
                sqlEndbBuffer.append("");
            } else {
                sqlEndbBuffer.append(",");
            }
        }
        
        sqlEndbBuffer.append(" )");
        
        System.out.println("New SQL==="+sqlEndbBuffer.toString());

------解决方案--------------------
break 只能跳出最近一个代码循环块

彻底退出 只能用return

所以 楼主可以用一些标志
------解决方案--------------------