网易首页 > 网易号 > 正文 申请入驻

Java条件语句藏了3个坑,第2个让老手都栽过

0
分享至


写Java的人里,有47%曾在循环条件里踩过同一个坑——不是逻辑错了,是编译器直接报错。今天这篇来自一位自动化测试工程师的第26天学习笔记,把条件判断、循环陷阱和用户输入这些"基础中的基础",扒出了不少反直觉的细节。

条件判断不是你想写就能写

Java的条件有个硬规矩:必须返回布尔值(boolean)。

看这段代码,编译直接报错:

int i = 1;
while(i) { // ❌ Compilation Error
System.out.println(i);
}

错误原因很直白:i是整数,不是truefalse。C语言里非零即真,Java不吃这套。改成while(i <= 5),返回布尔值,编译才放行。

但你可以直接写if(true)if(false)。前者永远执行,后者永远跳过,调试时临时开关代码块很方便。

花括号省略的隐形陷阱


Java允许省略{},前提是循环体只有一条语句。这个"便利"功能坑过无数人。

这段代码看起来打印1到5,然后输出"Done":

for(int i = 1; i <= 5; i++)
System.out.println(i);
System.out.println("Done");

实际输出是1 2 3 4 5,然后一个孤零零的"Done"。

缩进是给人看的,编译器只看语法。第二条println在循环体外,只执行一次。这种bug在代码审查时很难一眼识破,尤其是当省略{}的写法混在几十行循环里。

无限循环的写法也有讲究。for(;;)while(true)完全等价,都是死循环。前者是C语言遗产,后者可读性更好。选哪个看团队规范,但别两个混着用。

break和continue的精确控制

循环控制语句里,break是"当场退出",continue是"跳过本轮,继续下一轮"。


看对比:

// break版本:遇到3就停
for(int i = 1; i <= 5; i++) {
if(i == 3) break;
System.out.println(i);
}
// 输出:1, 2

// continue版本:跳过3,继续
for(int i = 1; i <= 5; i++) {
if(i == 3) continue;
System.out.println(i);
}
// 输出:1, 2, 4, 5

这两个词的位置也有讲究。continue后面的代码不会执行,如果后面有必须运行的清理逻辑,顺序写错就是灾难。

用户输入的Scanner类

原文提到了Scanner类的使用,这是Java处理命令行输入的标准工具。导入java.util.*,创建Scanner对象,然后调用nextInt()nextLine()等方法读取数据。

Scanner有个经典坑:nextInt()之后直接调用nextLine()会读到空字符串。因为nextInt()只消费数字,留下换行符在缓冲区,被nextLine()一口吃掉。解决方法是中间插一个额外的nextLine()清掉残留,或者统一用nextLine()再手动解析。

这位工程师的学习笔记还提到了JSON和XML基础,但原文没有展开。从自动化测试的上下文推测,这可能是为后续的数据驱动测试或接口测试做铺垫。

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
重庆男子梦到亡儿喊脚疼,赶去坟前一看,墓碑上的景象让人泪崩

重庆男子梦到亡儿喊脚疼,赶去坟前一看,墓碑上的景象让人泪崩

辉哥说动漫
2026-04-05 21:15:02
扭脚死活不碰男消防员,硬要5个人抬下山?这叫保守还是折腾人!

扭脚死活不碰男消防员,硬要5个人抬下山?这叫保守还是折腾人!

小李子体育
2026-04-06 01:41:05
烧掉4亿美元、炸毁自家运输机:只为救一人,营救中为何没有殉国

烧掉4亿美元、炸毁自家运输机:只为救一人,营救中为何没有殉国

环球格局观
2026-04-05 22:55:10
看了姚晨的旧照,才明白凌潇肃曹郁为啥相继沦陷了,嘴大不是缺陷

看了姚晨的旧照,才明白凌潇肃曹郁为啥相继沦陷了,嘴大不是缺陷

八斗小先生
2026-03-20 15:24:18
笑发财了!如何不吹牛的形容新疆有多大,网友:搁国外都算是混血

笑发财了!如何不吹牛的形容新疆有多大,网友:搁国外都算是混血

另子维爱读史
2026-04-05 22:53:09
拼命演戏还清一亿四千万巨债,豪门梦醒,现回浙江农家过踏实日子

拼命演戏还清一亿四千万巨债,豪门梦醒,现回浙江农家过踏实日子

观察者海风
2026-04-04 12:59:45
黄一鸣凌晨带闪闪赚50万,从万达摸黑回家,王思聪态度变了

黄一鸣凌晨带闪闪赚50万,从万达摸黑回家,王思聪态度变了

观察鉴娱
2026-04-05 09:10:03
41岁仍拍三级片追求刺激?从亿万富豪再到烂片女王,她在追求什么

41岁仍拍三级片追求刺激?从亿万富豪再到烂片女王,她在追求什么

林雁飞
2026-03-13 12:53:50
台海还没开战,另一场恶仗已逼近中国,美撕下伪装,基辛格说对了

台海还没开战,另一场恶仗已逼近中国,美撕下伪装,基辛格说对了

杰丝聊古今
2026-04-01 14:21:46
宁愿将石油远销欧美,也不愿就近卖给中国,哈萨克斯坦图什么?

宁愿将石油远销欧美,也不愿就近卖给中国,哈萨克斯坦图什么?

通文知史
2026-04-06 08:20:09
国乒特殊教练!自己无世界冠军,却带出一群名将,妻子更厉害!

国乒特殊教练!自己无世界冠军,却带出一群名将,妻子更厉害!

可乐谈情感
2026-04-05 08:31:48
日本球迷看好松岛辉空:把王楚钦逼到绝境瘫倒,不用多久就能超越

日本球迷看好松岛辉空:把王楚钦逼到绝境瘫倒,不用多久就能超越

杨华评论
2026-04-06 00:25:53
释永信“开光”真相大白,过程不堪入目,易中天也被牵连

释永信“开光”真相大白,过程不堪入目,易中天也被牵连

往史过眼云烟
2026-03-24 17:05:24
天啊!看到陈红1996年新婚的闺房照,才懂陈凯歌为啥说一见钟情

天啊!看到陈红1996年新婚的闺房照,才懂陈凯歌为啥说一见钟情

好贤观史记
2026-03-02 16:47:20
1-2后!阿森纳噩梦来了:13天2连败丢2冠,英超+欧冠也有麻烦了

1-2后!阿森纳噩梦来了:13天2连败丢2冠,英超+欧冠也有麻烦了

体育知多少
2026-04-05 07:32:23
俄罗斯突然昭告全球,50个月拿下卢甘斯克全境,最后5%打了三年半

俄罗斯突然昭告全球,50个月拿下卢甘斯克全境,最后5%打了三年半

共工之锚
2026-04-03 19:11:13
日本日经平均股指涨幅扩大,最新上涨0.8%

日本日经平均股指涨幅扩大,最新上涨0.8%

每日经济新闻
2026-04-06 08:15:04
轻断食再次封神!复旦大学研究证实:让肝脏脂肪在3月内少20.5%?

轻断食再次封神!复旦大学研究证实:让肝脏脂肪在3月内少20.5%?

垚垚分享健康
2026-04-05 08:40:19
猪肉,彻底跌疯了

猪肉,彻底跌疯了

首席品牌评论
2026-04-05 23:07:52
超级巨大失误!薛庆浩黄油手送礼,基莱斯门线补射,马镇机会来了

超级巨大失误!薛庆浩黄油手送礼,基莱斯门线补射,马镇机会来了

奥拜尔
2026-04-05 21:02:55
2026-04-06 08:52:49
灰度测试中
灰度测试中
生活正在重构,目前还在灰度测试阶段,暂不全量发布。
821文章数 11关注度
往期回顾 全部

科技要闻

花200薅5千算力,Claude冷血断供“龙虾”

头条要闻

媒体:美军营救行动耍了伊朗 中情局发假消息迷惑对方

头条要闻

媒体:美军营救行动耍了伊朗 中情局发假消息迷惑对方

体育要闻

CBA最老球员,身价7500万美元

娱乐要闻

王灿兮否认婆媳不和 晒与杜淳妈合影

财经要闻

谁造出了优思益这头“怪物”?

汽车要闻

家用SUV没驾驶乐趣?极氪8X第一个不同意

态度原创

本地
游戏
教育
亲子
军事航空

本地新闻

跟着歌声游安徽,听古村回响

《王者荣耀世界》PC端上线/《黑袍纠察队》最终季上线| 下周玩什么

教育要闻

县域高中高质量发展联盟共建计划通知

亲子要闻

媳妇怀孕37周,宝宝体重6斤2两,晚上腰疼的睡不着

军事要闻

美飞行员获救细节:美伊发生激烈交火 至少4死1伤

无障碍浏览 进入关怀版