为了账号安全,请及时绑定邮箱和手机立即绑定

避免来自用户输入的 NullPointerException

避免来自用户输入的 NullPointerException

阿晨1998 2022-05-12 16:08:56
我正在使用 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(空字符串值->“”但没有抛出异常消息)
查看完整描述

3 回答

?
心有法竹

TA贡献1866条经验 获得超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);

    }

}


查看完整回答
反对 回复 2022-05-12
?
慕婉清6462132

TA贡献1804条经验 获得超2个赞

1) 阅读文档 - 请注意 BufferedReader.readline 在明确定义的情况下可以合法地返回 null。

2)编写可以处理可能的空返回的代码。


查看完整回答
反对 回复 2022-05-12
?
弑天下

TA贡献1818条经验 获得超8个赞

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();

        if(str!=null && str.length() >=1 && str.length()<=15)

        {

            System.out.println(str);

        }

    }

   }

}


查看完整回答
反对 回复 2022-05-12
  • 3 回答
  • 0 关注
  • 147 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号