猿问

通过方法时发生 NullPointerException

我试图找出一些 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)

请帮忙,因为编译成功但代码没有运行


呼唤远方
浏览 244回答 2
2回答

交互式爱情

我建议在方法中处理特殊/角落情况,而不是期望调用者以空或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;}

慕桂英4014372

您已将问题指定input为 nullinput = null; boolOutput = isWordPalindrome(input);为输入分配空字符串值以防您不想要任何东西input = ""; boolOutput = isWordPalindrome(input);
随时随地看视频慕课网APP

相关分类

Java
我要回答