社区
Java SE
帖子详情
小测试,没有什么意义,只是无聊.
axman
领域专家: 后端开发技术领域
2008-09-19 01:51:08
java中如何处理下面的逻辑:
if(条件1){
语句1
语句2
语句3
}
if(条件2){
语句1
语句2
语句3
}
if(条件3){
语句1
语句2
语句3
}
现在把
语句1
语句2
语句3
写到一个地方,让上面的条件直接goto到那里.
...全文
242
15
打赏
收藏
小测试,没有什么意义,只是无聊.
java中如何处理下面的逻辑: if(条件1){ 语句1 语句2 语句3 } if(条件2){ 语句1 语句2 语句3 } if(条件3){ 语句1 语句2 语句3 } 现在把 语句1 语句2 语句3 写到一个地方,让上面的条件直接goto到那里.
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
15 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
ZangXT
2008-09-19
打赏
举报
回复
我要再认真学学,好好理解.
axman
2008-09-19
打赏
举报
回复
[Quote=引用 11 楼 ZangXT 的回复:]
引用 8 楼 axman 的回复:
这个问题其实真正编码的时候经常用到.就是把很多重复操作提取为了一个方法.
但是提取方法如果用到很就是,就要把变量一个一个传过去,过一会发现又少传了一个变量,又回过头来重新给方法加参数.
就是说外部就是如果很多,就要定义很多参数,比如关闭rs,stmt,conn,就要把这三个变量传给提取的共用的方法.
每次if(ccc) close(rs,stmt,conn);如果参数很多和多次写语句差不多了.
其实我们都知道jav…
[/Quote]
是在循环之前啊,但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);
}
axman
2008-09-19
打赏
举报
回复
都已经说了,如果没有太多的变量,可以提取为方法.但如果要操作太多的变量,就要把这些方法都作为参数传过去,有时要反复修改参数的个数.
如果在原来的地方直接操作就不要需要传参数.
比如:
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);
}
就很方便地跳过下面的操作.
ZangXT
2008-09-19
打赏
举报
回复
[Quote=引用 8 楼 axman 的回复:]
这个问题其实真正编码的时候经常用到.就是把很多重复操作提取为了一个方法.
但是提取方法如果用到很就是,就要把变量一个一个传过去,过一会发现又少传了一个变量,又回过头来重新给方法加参数.
就是说外部就是如果很多,就要定义很多参数,比如关闭rs,stmt,conn,就要把这三个变量传给提取的共用的方法.
每次if(ccc) close(rs,stmt,conn);如果参数很多和多次写语句差不多了.
其实我们都知道java可以break到一个label,但那要…
[/Quote]
我考虑过类似的方法,不过java的标号只允许在循环之前吧.
良言相告
2008-09-19
打赏
举报
回复
代码重构,提取公用方法不就得了
chaowendao
2008-09-19
打赏
举报
回复
哎,复杂问题简单化哦!
axman
2008-09-19
打赏
举报
回复
这个问题其实真正编码的时候经常用到.就是把很多重复操作提取为了一个方法.
但是提取方法如果用到很就是,就要把变量一个一个传过去,过一会发现又少传了一个变量,又回过头来重新给方法加参数.
就是说外部就是如果很多,就要定义很多参数,比如关闭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来保证只循环一次.
}
axman
2008-09-19
打赏
举报
回复
你的意思是对的.但上面说了不能提取成函数,只允许用流程控制.
if (条件1 || 条件2 || 条件3){
语句1
语句2
语句3
}
是错误的,因为条件中还要执行其它语句.
比如建立一个连结.
Connection conn = getConnection();
然后我做具体的几步操作.
第一步条件不满足,则直接执行关闭连结,下面的就不用做了.
如果满足,做第二步,如果条件不满足,直接关闭连结就不做第三步了.
if (条件1 || 条件2 || 条件3)要把三步都做了才能用||.没有达到goto的作用,goto是直接跳过下面的操作.
nuskwill
2008-09-19
打赏
举报
回复
你把语句1,2,3写到一个函数里,再在对应条件下调用这个函数就是了.是这个意思吗?
justinavril
2008-09-19
打赏
举报
回复
Why????
if (条件1 || 条件2 || 条件3){
语句1
语句2
语句3
}
Maybe different things happen in different conditions...
axman
2008-09-19
打赏
举报
回复
简单说实现这样的功能:
if(t1) goto labelx;
其它语句
if(t2) goto labelx;
其它语句
if(t3) goto labelx;
labelx:
stmt1;
stmt2;
stmt3;
stmt4;
不要提取成方法,用流程控制
hahaso
2008-09-19
打赏
举报
回复
貌似楼主是说将3个重复的块提取出来变成
here:
function 1;
function 2;
function 3;
if(a){
goto here;
}
if(b){
goto here;
}
if(c){
goto here;
}
liuqianqian
2008-09-19
打赏
举报
回复
到哪里呀!楼主能不能说清楚啊!
hunzaidalian
2008-09-19
打赏
举报
回复
么意思?
我们为什么会
无聊
本文探讨了
无聊
感的心理学基础,分析了外部刺激需求与内在调节能力对其的影响,并讨论了注意力水平与情绪波动在其中的作用。文章还介绍了几种克服
无聊
的方法。
代码之外周刊(第163期):你需要学会
无聊
本文探讨现代人因过度使用电子设备而丧失
无聊
体验,导致
意义
感缺失的问题。通过介绍大脑的‘默认模式网络’,说明发呆和
无聊
对思考人生
意义
、激发创造力的重要性,并引用实验和专家建议,倡导主动创造无干扰时间,打破对即时刺激的依赖。
蓝桥杯 试题 算法训练
无聊
的逗 C++ 详解
本文介绍了一种使用深度优先搜索(DFS)解决蓝桥杯算法训练题《
无聊
的逗》的方法,通过增加“放弃”选项解决了无法平均分配木棍的问题,实现了将木棍分成长度相等的两组,并给出了详细的解析及代码实现。
无聊
的姓名
测试
作者看到公社的姓名
测试
帖后,对“王河生”进行姓名
测试
。给出了笔画、天格、人格等地格等数理及评分,还详细解说了各数理暗示,分析了天、人、地三才情况,涉及事业、家庭、婚姻等方面。
我希望我的代码
无聊
作者在将Adobe Flex代码转换为Spring Boot RESTful服务或AWS Lambda服务时,同事评价其代码“
无聊
”,这实则是恭维。作者回顾此前代码的混乱,强调构建服务时应让代码易读、专注业务逻辑。认为有趣的代码难经时间考验,希望编写十年后仍易理解的
无聊
代码。
Java SE
62,622
社区成员
307,257
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章