java ——long类型判空

本文介绍了一个项目中获取用户生日字段时遇到的空指针异常问题,并给出了正确的非空判断方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近写的项目里有一个获取个人信息的功能,其中有取个人信息里面得到生日字段的属性值的需求,在添加了非空判断时没有注意,判断条件是if((me.getBirthday()!=null) &&me.getBirthday().getTime()>0)这样的,结果这种判断是无效的,还是会出现空指针异常,研究了一下找到判断条件的问题:if((null!=me.getBirthday()) &&me.getBirthday().getTime()>0) 顺序错误。
### Java 中使用 `Scanner` 类输入 Long 类型数据 在 Java 中,可以借助 `Scanner` 类来实现从控制台读取用户输入的功能。对于特定类型的数值输入(如 `long`),可以通过调用相应的扫描器方法完成。 #### 方法说明 为了正确处理用户的输入并将其解析为 `long` 数据类型,通常会采用以下方式: 1. **导入必要的包** 需要先引入 `java.util.Scanner` 包以支持 `Scanner` 的功能[^2]。 2. **创建 Scanner 对象** 使用如下代码实例化一个 `Scanner` 对象用于捕获标准输入流中的内容: ```java Scanner scanner = new Scanner(System.in); ``` 3. **获取并验证输入** 调用 `nextLong()` 方法可以直接尝试将下一段输入解释成 `long` 型变量。然而需要注意的是,如果当前输入不满足预期格式或者超出范围,则可能引发运行时错误——具体来说是一个 `InputMismatchException` 异常。因此建议加入异常捕捉机制来进行健壮性设计。 4. **资源管理** 完成所有操作之后记得显式关闭该对象以释放占用的相关系统资源,在此过程中推荐利用 try-with-resources 结构简化编码流程以及增强安全性。 以下是完整的示范程序片段展示如何安全有效地接受来自终端的一条长整数记录: ```java import java.util.InputMismatchException; import java.util.Scanner; public class Main { public static void main(String[] args) { // 创建带有自动关闭特性的 Scanner 实例 try (Scanner scanner = new Scanner(System.in)) { System.out.println("请输入一个有效的 long 数字:"); while (!scanner.hasNextLong()) { // 检查下一个标记是否能被解读成长整形 String invalidToken = scanner.next(); System.out.printf("\"%s\" 不是合法的 long 类型,请重新输入%n", invalidToken); } long value = scanner.nextLong(); // 成功提取有效 long 变量 System.out.printf("您刚刚录入了 %d.%n", value); } catch(Exception e){ System.err.print(e.getMessage()); } } } ``` #### 注意事项 - 当前示例采用了循环结构不断提示直至接收到合适形式的数据为止;实际应用可根据需求调整策略[^3]。 - 如果预计可能会遇到非常规情况下的极端大值或负号开头等情况,应提前做好充分测试准备[^1]。 - 总结起来就是合理运用条件断配合恰当的方法名选用再加上良好的习惯养成才能更好地驾驭此类基础却重要的技术要点。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值