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好些没起作用?谢谢

解决方案 »

  1.   

    break只能跳出当前循环吧,跳出后最外层的for循环还有继续的。
      

  2.   

            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());
    前提 两个数组长度一致
      

  3.   

    String[] columns = {"NAME","CLASS_ID"};
            String[] columnsType={"VARCHAR2","INT"};
            String tableN = null;
            StringBuilder sqlEndbBuffer = new StringBuilder("create or replace table "+tableN+"( ");
            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=a;
                    break labelb;
                }
                if (i == columnsType.length - 1) {
                    sqlEndbBuffer.append("");
                } else {
                    sqlEndbBuffer.append(",");
                }
            }
            
            sqlEndbBuffer.append(" )");
            
            System.out.println("New SQL==="+sqlEndbBuffer.toString());
      

  4.   

    2楼可以解决问题,但是不知道用for循环嵌套怎么处理的?break 换continue,也有点问题
      

  5.   

    to4楼:
    输出的语句有点问题?
    create or replace table sdsdsd( NAME VARCHAR2,CLASS_ID VARCHAR2 )
      

  6.   

    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(",");
                }
            }
      

  7.   


     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());
      

  8.   

    break 只能跳出最近一个代码循环块彻底退出 只能用return所以 楼主可以用一些标志
      

  9.   

    break 结束循环
    continue 跳过本次循环 继续下次循环
    你break加的不对 
    外层循环 开始 运行 sqlEndbBuffer.append(columns[i]+" ");
     内层循环 开始 运行 sqlEndbBuffer.append(columnsType[j]);
     然后break 标签 --->直接结束外层循环
    逻辑不对 内层循环永远从0开始....