【问题标题】:Code won't work because of null pointer exception [duplicate]由于空指针异常,代码将无法工作[重复]
【发布时间】:2019-10-24 11:43:18
【问题描述】:

我在java中有一个简单的二类程序,主类不想创建nameProcessor类的对象

我尝试了我所知道的一切,但我仍然是一个愚蠢的初学者

public class Main
{
    public static void Main()
    {
        // initialise instance variables

        String name="Andy";
        System.out.println("That name is "+name.length()+" letters long");
        System.out.println("The first letter is "+name.substring(0,1));
        nameProcessor np1 = new nameProcessor(name);
        if (np1.nameChecker()==false)
           System.out.println("That is a nice name.");
        else
            System.out.println("That is a wierd name.");
    }
}

public class nameProcessor
{
    private String userName;
    private String letters;
    private String letter;
    private boolean give;


    public nameProcessor(String name)
    {
        // initialise instance variables
        String userName=name;
        String letters="XYZWxyzw";
        String letter="";
        boolean give=false;
    }


    public boolean nameChecker()
    {
        give=false;
        for(int i=0;i<userName.length();i++){
            letter=letters.substring(i,i+1);
            if (userName.indexOf(letter)!=-1){
                give=true;
            }
        }
        return give;
    }
}

//一些正确的输出是

//Andy->这是个好名字 //XXX->这是一个奇怪的名字

//任何包含 XYZWxyzw 的字符串都应该返回 true

【问题讨论】:

  • 看看nameProcessor(String name):你隐藏了具有相同名称的局部变量的字段,因此初始化不会发生。将String userName=name; 更改为userName=name; 等。
  • @GuilhermeMartin 为什么不将其标记为重复?
  • @Stultuske 已经这样做了
  • 您的主要方法缺少 String args[] 作为参数。公共静态 void main(String args[]) {}
  • @GuilhermeMartin 我看到你的帖子说它可能是重复的,但标志本身没有任何内容..我仍然没有。根据柜台,我是唯一一个标记它关闭它的人。

标签: java bluej


【解决方案1】:

您再次重新定义变量而不是分配给类成员

 public nameProcessor(String name)
    {
        // initialise instance variables
        String userName=name; // you are resintializing the local variables 
        String letters="XYZWxyzw";
        String letter="";
        boolean give=false;
    }

因此,您的方法 nameChecker()userName 设为 null,因此出现空指针异常。

这应该是

public nameProcessor(String name)
        {
            // initialise instance variables
            this.userName=name; // you are resintializing the local variables 
            this.letters="XYZWxyzw";
            ...
        }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-02-04
    • 2015-05-10
    • 2014-07-28
    • 2016-04-28
    • 1970-01-01
    相关资源
    最近更新 更多