当前位置: 首页 > 知识库问答 >
问题:

如何修复空指针异常?

鱼恩
2023-03-14

我正试着数字符串中元音的数目。问题是它编译正确,但当我运行它时,命令窗口显示“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;
                }

共有1个答案

海雪松
2023-03-14

线路

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

什么都不做。如果将其更改为

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

您将把字母中的所有元素设置为相应的字符。这将修复NullPointerException

您还可以通过使用一些regex技巧来保存大量代码:

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);
    }
}
 类似资料:
  • 问题内容: 什么是Java空指针异常,它是如何发生的?如何修改? 问题答案: 当我们创建一个引用类型的变量时,实际上是创建了一个指向该变量的一个指针,例如: 这种情况下是,tom 其实是指向Person对象的一个指针。 如果我们访问一个没有初始化的对象时,就会出现空指针异常。例如,我们声明了一个Person对象tom,而没有给tom赋值(初始化),这样再调用tom的方法是就会出现空指针异常。 输出

  • 我目前正在开发我的第一个游戏(我不会无耻地推广),但我正试图建立一个排行榜,但当我尝试初始化我的GameHelper时,我得到了一个例外。我找不到任何答案,如果有任何帮助,我将不胜感激。 代码: 我收到的错误是 “java.lang.RuntimeException:无法实例化活动组件信息{com.aidanstrong.runner/com.aidanstrong.runner.AndroidL

  • 问题内容: 有可能这可能是一个双重问题。我将String变量初始化为null。我可能会或可能不会使用一个值更新它。现在我想检查此变量是否不等于null以及我尝试执行的操作是否会得到null指针异常。空指针异常,因为它代价高昂。是否有任何有效的解决方法.TIA 问题答案: 如果您使用 你 不会 得到。 我怀疑你在做什么: 这是因为null 而引发,而不是因为null。 如果仍然无法解释,请发布您用于

  • 我已经更新了我的项目中的一些依赖关系之后,我的Hibernate配置类显示Nullpointerx的。 我将SpringDataJPA存储库与hibernate一起使用,已经超过24小时了,仍然没有找到任何关于小问题的适当解决方案。 我已经尝试过的一些解决方案:- 使用@bean(name=“entityManagerFactory”)提供bean名称 我面临的问题 波姆。xml文件 配置类 db

  • 首先,下面的代码片段是Google云项目应用程序的一部分,在我的本地客户机Raspberry Pi 1上运行。为了能够从连接到Pi的传感器向云发送数据,需要授权。所有需要的客户端机密都存储在src/main/resources中的“client_secrets.json”中。 项目层次结构 当试图使用客户端机密来授权时,下面的代码抛出一个NullPointerException。它是类“CmdLi

  • 当我试图从DB查询结果时,我得到一个空指针异常。以下是错误: 这是错误产生的函数。 如果我启动应用程序信息服务(=new ApplicationInfoService()),我会得到一个指向我的服务类的空指针错误,在这里进行查询 错误转到createQuery行,如果我打印出EntityManager,它将返回“null”。为什么我的Entitymanager不能初始化。我在我的登录系统中使用了几