【问题标题】:How to fill the null array with a specific number in Java ?如何用 Java 中的特定数字填充空数组?
【发布时间】:2014-10-18 08:29:35
【问题描述】:

我正在尝试解决输入由 Strings 组成的回文问题,如果两个字符串的连接代表一个回文单词(回文是一个可以在任一方向以相同方式读取的单词。例如,下列的 词是回文:公民、雷达、转子和女士) 然后将其保存到数组中以稍后打印,否则打印“0” 但我在用零填充空索引时遇到问题,在这里我得到异常

 for (int re = 0; re < result.length; re++) {
                if (result[re].equals(null)) {
                    result[re] = "0";
                }
            }
    "Exception in thread "main" java.lang.NullPointerException"

这是我的完整代码

import java.util.Scanner;

public class Palindrome {

    public static String reverse(String R2) {
        String Reverse = "";
        String word_two = R2;

        int ln = word_two.length();
        for (int i = ln - 1; i >= 0; i--) {
            Reverse = Reverse + word_two.charAt(i);
        }
        return Reverse;
    }

    public static void main(String[] args) {
        Scanner inpoot = new Scanner(System.in);


        int stop = 0;
        String pal1;
        int Case = inpoot.nextInt();
        String result[] = new String[Case];
        String Final;
        int NumberofWords;
        for (int i = 0; i < Case; i++) {
            NumberofWords = inpoot.nextInt();

            String words[] = new String[NumberofWords];
            for (int array = 0; array < words.length; array++) {
                words[array] = inpoot.next();
            }

            for (int word1 = 0; word1 < NumberofWords; word1++) {
                if (stop > Case) {
                    break;
                }
                for (int word2 = 0; word2 < NumberofWords; word2++) {
                    if (word1 == word2) {
                        continue;
                    }

                    Final = "" + words[word1].charAt(0);
                    if (words[word2].endsWith(Final)) {
                        pal1 = words[word1].concat(words[word2]);
                    } else {
                        continue;
                    }
                    if (pal1.equals(reverse(pal1))) {

                        result[i] = pal1;
                        stop++;
                        break;
                    } else {
                        pal1 = "";
                    }

                }

            }


        }
        // HERE IS THE PROBLEM 
        for (int re = 0; re < result.length; re++) {
            if (result[re].equals(null)) {
                result[re] = "0";
            }
        }
        for (int x = 0; x < result.length; x++) {
            System.out.println("" + result[x]);
        }

    }

}

【问题讨论】:

    标签: java arrays indexing


    【解决方案1】:

    anObject.equals(null) 之类的测试毫无意义。确实,如果anObject为null,它会抛出一个NullPointerException(NPE),如果不是,它总是返回false。

    要测试引用是否为空,只需使用anObject == null

    【讨论】:

      【解决方案2】:

      如果要检查result[re]是否为null,则不能使用equals。使用身份比较:

      if (result[re] == null) {
          result[re] = "0";
      }
      

      【讨论】:

        猜你喜欢
        • 2020-02-11
        • 1970-01-01
        • 2022-08-04
        • 2022-09-29
        • 2015-06-11
        • 2013-02-06
        • 1970-01-01
        • 2010-10-09
        • 2013-12-19
        相关资源
        最近更新 更多