Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中,在子类的函数中使用字符串会得到null_Java_Oop_Object_Inheritance_Nullpointerexception - Fatal编程技术网

在Java中,在子类的函数中使用字符串会得到null

在Java中,在子类的函数中使用字符串会得到null,java,oop,object,inheritance,nullpointerexception,Java,Oop,Object,Inheritance,Nullpointerexception,我最近一直在学习Java,它与大多数其他语言有很大的不同。 我和其他一些人站在那里挠头,不明白为什么有些东西不起作用,这是我所看到的所有问题。这个时间 这是令人沮丧和恼火的,希望我能为其他人解释一下 问过你自己吗 “我已经试着让它工作了几个小时,但我似乎看不到它。 我试图将字符串“reducerFractions”传递给FractionReducer类,但不知何故,当它进入该类时,它会变成null 我对Java非常陌生,这只是我的第二个Java程序,我不太明白为什么它不起作用 父类: 终端输出

我最近一直在学习Java,它与大多数其他语言有很大的不同。 我和其他一些人站在那里挠头,不明白为什么有些东西不起作用,这是我所看到的所有问题。这个时间 这是令人沮丧和恼火的,希望我能为其他人解释一下

问过你自己吗

“我已经试着让它工作了几个小时,但我似乎看不到它。 我试图将字符串“reducerFractions”传递给FractionReducer类,但不知何故,当它进入该类时,它会变成null

我对Java非常陌生,这只是我的第二个Java程序,我不太明白为什么它不起作用

父类: 终端输出 这里有一个明显的(对大多数人来说)问题,但只有当你经常使用对象时,这个问题才明显。

好吧,天哪。 问题显然是与共享权限有关

大多数人会认为你只需要将字符串交换给公众,我们不想这样做,我们需要保护我们的数据,严密地保护它,以防止错误、错误和错误信息

这里需要认识到的是,您需要从子类中看到它。当然,子类可以看到它,因为它是受保护的,但它也是动态的。 所以它在本质上发生了变化

没错,所以我们所需要做的就是将其更改为静态,这样信息就可以流动,而且由于它受到保护,所以不会受到干扰

我希望这对你们中的一些人有所帮助,或者至少对某些人有所帮助

protected static String reducerFractions;

从我所看到的,您将reducerFractions作为字符串参数a传递到FractionReducer。因此,如果您将对reducerFractions的引用替换为对a的引用,它应该适用于您。如下所示:

     public void setFraction(String a)
{
    System.out.println(a);
    //Right here it's saying it's null, I don't understand why...
    String[] stringReducedFraction = a.split("/");
    double numerator = Float.valueOf(stringReducedFraction[0]);
    double denominator = Float.valueOf(stringReducedFraction[1]);
    //split up the string here for other uses
 }

使字符串受保护且保持静态并不是真正可行的方法。如果您在FractionReducer中需要它,则应将其传入。

您尝试从初始化器调用的方法访问字段
reducerFractions
。我认为在调用该方法时,字段未完全初始化


您可以发布符合条件的代码吗?

如果没有一些省略的代码,您将无法理解。这不是问题的正确答案,因为静态变量与实例变量完全不同。您的程序在使用静态变量和多个线程时将无法按预期工作。请将您的问题扩展到告诉你正确的答案。嘿,这真的很好,我甚至没有想到。很好的捕获。我在帮助我的朋友解决这个代码,我们花了大约20分钟的时间才弄明白如何使它静态工作,但你的更好。
2/1 //The string prints out fine in the parent class
null//but null in the child?
Exception in thread "main" java.lang.NullPointerException
    at FractionReducer.setFraction(FractionReducer.java:25)
    at FractionCalc.FractionCalc(FractionCalc.java:73)
    at FractionUI.Run(FractionUI.java:47)
    at MainP2.main(MainP2.java:19)
protected static String reducerFractions;
     public void setFraction(String a)
{
    System.out.println(a);
    //Right here it's saying it's null, I don't understand why...
    String[] stringReducedFraction = a.split("/");
    double numerator = Float.valueOf(stringReducedFraction[0]);
    double denominator = Float.valueOf(stringReducedFraction[1]);
    //split up the string here for other uses
 }