java中如何处理下面的逻辑:if(条件1){
语句1
语句2
语句3
}
if(条件2){
语句1
语句2
语句3
}
if(条件3){
语句1
语句2
语句3
}现在把
语句1
语句2
语句3
写到一个地方,让上面的条件直接goto到那里.
语句1
语句2
语句3
}
if(条件2){
语句1
语句2
语句3
}
if(条件3){
语句1
语句2
语句3
}现在把
语句1
语句2
语句3
写到一个地方,让上面的条件直接goto到那里.
here:
function 1;
function 2;
function 3;
if(a){
goto here;
}
if(b){
goto here;
}
if(c){
goto here;
}
其它语句
if(t2) goto labelx;
其它语句
if(t3) goto labelx;labelx:
stmt1;
stmt2;
stmt3;
stmt4;不要提取成方法,用流程控制
if (条件1 || 条件2 || 条件3){
语句1
语句2
语句3
}
Maybe different things happen in different conditions...
if (条件1 || 条件2 || 条件3){
语句1
语句2
语句3
}
是错误的,因为条件中还要执行其它语句.比如建立一个连结.
Connection conn = getConnection();然后我做具体的几步操作.
第一步条件不满足,则直接执行关闭连结,下面的就不用做了.
如果满足,做第二步,如果条件不满足,直接关闭连结就不做第三步了.
if (条件1 || 条件2 || 条件3)要把三步都做了才能用||.没有达到goto的作用,goto是直接跳过下面的操作.
就是说外部就是如果很多,就要定义很多参数,比如关闭rs,stmt,conn,就要把这三个变量传给提取的共用的方法.
每次if(ccc) close(rs,stmt,conn);如果参数很多和多次写语句差不多了.其实我们都知道java可以break到一个label,但那要在循环中,可是我们这样的逻辑不在循环中如何break呢?赵本山大叔说:"没有困难创造困难也要上".本着这个精神,我们就要造循环.但造的这个循环只是循环的架子,实际上没有循环:for(int i=0;i<1;i++){ if(t1) break label1;
........;
if(t2) break label1;
........;
}
label1:
stmt1;
stmt2;
stmt3;
stmt4;简单说你只要做一个一次循环就达到了goto的目的.do{
if(t1) break label1;
........;
if(t2) break label1;
........;
}while(false);
或者
while(true){
if(t1) break label1;
........;
if(t2) break label1;
........;
break;//最后加一个break来保证只循环一次.
}
如果在原来的地方直接操作就不要需要传参数.比如: public static void main(String[] args) throws Exception{ if(1==1){跳过System.out.println(111),直接操作System.out.println(222);}
System.out.println(111); System.out.println(222);
}
改成:
public static void main(String[] args) throws Exception{
label1:
do{
if(1==1) break label1;
System.out.println(111);
}while(false);
System.out.println(222);
}
就很方便地跳过下面的操作.
是在循环之前啊,但break到那个标号就是跳出了循环.public static void main(String[] args) throws Exception{
label1:
do{
if(1==1) break label1;
System.out.println(111);
}while(false);
System.out.println(222);
}