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

通过方法时发生 NullPointerException

通过方法时发生 NullPointerException

呼唤远方 2021-08-25 09:54:47
我试图找出一些 Java 基础知识。我在下面输入的代码编译得很好,但不能运行。每次运行代码时,它都会说NullPointerException发生错误。class testOnStrings {    public static void main (String args []){        String input, output;        // isWordPalindrome        input = "forever eating cheese";        boolean boolOutput = isWordPalindrome(input);        System.out.println("\n" + input + (boolOutput ? " is " : " is not ") + "a word palindrome");        input = "fall leaves when leaves fall";        boolOutput = isWordPalindrome(input);        System.out.println("\n" + input + (boolOutput ? " is " : " is not ") + "a word palindrome");        input = null;        boolOutput = isWordPalindrome(input);        System.out.println("\n" + input + (boolOutput ? " is " : " is not ") + "a word palindrome");    }    static String reverseWords(String input) {        // My code        String words[] = input.split(" ");        String reverseWord = "";        for (int pointer = words.length - 1; pointer >= 0; pointer--)            reverseWord += words [pointer] + " ";        return reverseWord;    }    static boolean isWordPalindrome(String input) {        // My code        String reverseWordInput = reverseWords(input);        boolean isPalindrome = input.equals(reverseWordInput);        return isPalindrome;    }}运行代码时出现错误。Exception in thread "main" java.lang.NullPointerException    at idle.reverseWords(idle.java:21)    at idle.isWordPalindrome(idle.java:30)    at idle.main(idle.java:15)请帮忙,因为编译成功但代码没有运行
查看完整描述

2 回答

?
交互式爱情

TA贡献1712条经验 获得超3个赞

我建议在方法中处理特殊/角落情况,而不是期望调用者以空或null字符串行事。


您可以增强isWordPalindrome处理null,zero或singlecharacter 的方法,以便可以处理任何类型的输入。


发件人


static boolean isWordPalindrome(String input) {

    // My code

    String reverseWordInput = reverseWords(input);

    boolean isPalindrome = input.equals(reverseWordInput);

    return isPalindrome;

}


static boolean isWordPalindrome(String input) {

    // My code

    if (input == null || input.length() == 0 || input.length() == 1) return true;

    String reverseWordInput = reverseWords(input);

    boolean isPalindrome = input.equals(reverseWordInput);

    return isPalindrome;

}

上面的增强也将避免调用reverseWords的null,zero或single性格。


同样,我也会增强reverseWords。


发件人


static String reverseWords(String input) {

    // My code

    String words[] = input.split(" ");

    String reverseWord = "";

    for (int pointer = words.length - 1; pointer >= 0; pointer--)

        reverseWord += words [pointer] + " ";

    return reverseWord;

}


static String reverseWords(String input) {

    // My code

    if (input == null || input.length() == 0 || input.length() == 1) return input;

    String words[] = input.split(" ");

    String reverseWord = "";

    for (int pointer = words.length - 1; pointer >= 0; pointer--)

        reverseWord += words [pointer] + " ";

    return reverseWord;

}


查看完整回答
反对 回复 2021-08-25
?
慕桂英4014372

TA贡献1871条经验 获得超13个赞

您已将问题指定input为 null

input = null;
boolOutput = isWordPalindrome(input);

为输入分配空字符串值以防您不想要任何东西

input = "";
boolOutput = isWordPalindrome(input);


查看完整回答
反对 回复 2021-08-25
  • 2 回答
  • 0 关注
  • 243 浏览

添加回答

举报

0/150
提交
取消
微信客服

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

帮助反馈 APP下载

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

公众号

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