如何修复空指针异常?

贝宁尼姆

我正在尝试计算字符串中的元音数量。问题是它可以正确编译,但是当我运行它时,命令窗口会CountVowels.main(CountVowels.java:25)上显示“线程'main'中的异常java.lang.NullPointerException”

import javax.swing.JOptionPane;

public class CountVowels
{
    public static void main(String[] args)
    {
        String thingy = JOptionPane.showInputDialog("Please enter a sentence, and I  will count the vowels.");
        int count = 0;

        char[] chars = new char[thingy.length()];
        String[] letters = new String[thingy.length()];

        for(int i = 0; i < thingy.length(); ++i)
        {
            chars[i] = thingy.charAt(i);
        }

        for(int i = 0; i < letters.length; ++i)
        {
            letters[i].valueOf(chars[i]);
        }

        for(int i = 0; i < chars.length; ++i)
        {
            if(letters[i].equals("a") || letters[i].equals("e") || letters[i].equals("i") || letters[i].equals("o") || letters[i].equals("u"))
            {
                ++count;
            }
        }
        System.out.println("There are " + count + " vowels in the string + " + thingy);
    }
}

是什么原因造成的,如何解决,如何防止将来再次发生?

第25行是我的if语句:

if(letters[i].equals("a") || letters[i].equals("e") || letters[i].equals("i") || letters[i].equals("o") || letters[i].equals("u"))
                {
                    ++count;
                }
戴帽子的家伙

线

letters[i].valueOf(chars[i]);

什么也没做。如果您将其更改为

letters[i] = String.valueOf(chars[i]);

您将所有元素设置letters为相应的字符。那应该解决你的问题NullPointerException

您还可以通过使用一些正则表达式技巧来节省大量代码:

import javax.swing.JOptionPane;

public class CountVowels
{
    public static void main(String[] args)
    {
        String input = JOptionPane.showInputDialog("Please enter a sentence, and I will count the vowels.");
        String[] letters = input.split("(?<=.)(?=.)");

        int count = 0;

        for(int i = 0; i < letters.length; i++)
        {
            if(letters[i].matches("[aeiou]"))
            {
                count++;
            }
        }
        System.out.println("There are " + count + " vowels in the string + " + input);
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章