java - 避免来自用户输入的 NullPointerException
问题描述
我正在使用 JDK 1.7,我正在检查所有输入条件的代码。如果用户没有在字符串中输入任何值,那么它会抛出 NullPointerException。即使用户没有输入任何值,有没有办法防止导致 NullPointerException?
我尝试尝试捕获块来捕获异常
import java.util.*;
import java.io.BufferedReader;
import java.io.InputStreamReader;
class TestClass {
public static void main(String args[]) throws Exception {
Scanner s = new Scanner(System.in);
int i=s.nextInt();
System.out.println(i);
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = br.readLine();
try{
int length=str.length(); //NullPointerException here
if(length>=1 && length<=15)
{
System.out.println(str);
}
}
catch(NullPointerException e)
{
System.out.println("Must enter a string");
}
}
}
样本输入 - 5 null
预期输出- 5(空字符串值->“”但没有抛出异常消息)
解决方案
爪哇 8
int length = Optional.ofNullable(str).orElse("").length();
爪哇 7
int length = str == null ? 0 : str.length();
Java 7 + Apache Commons
int length = StringUtils.length(str);
利用Scanner
使用Scanner
代替BufferedReader
; scane.nextLine()
返回不是null
字符串。
public static void main(String... args) {
try (Scanner s = new Scanner(System.in)) {
System.out.println(s.nextInt());
s.nextLine();
String str = s.nextLine();
if (str.length() >= 1 && str.length() <= 15)
System.out.println(str);
}
}
推荐阅读
- typescript - 通过昨天.setDate(currentDay.getDate() - 1) 计算前一天失败
- excel - 在处理重复值时根据“查找”单元格的原始位置查找相邻的单元格值
- r - rgdal 不会安装在 docker ubuntu 18.04 “ERROR:: command not found”
- javascript - 为什么语句在 db 事务之前执行?
- html - Bootstrap 图标正在向下移动切换器导航栏
- php - 使用foreach时如何将索引数据放入div标签并迭代回顶部codeigniter
- string - 比较两个大txt文件的最有效方法
- indexing - 站点地图 URL 重定向到另一个
- asp.net-core - 我可以安全地删除对 .pdb 文件的引用吗?
- kotlin - 块注释内引号中的结束标记