0

私は最近 Java を学んでいますが、Java は他のほとんどの言語とはかなり異なります。私と他の何人かは、何かが機能しない理由を理解できずに頭をかきむしっていましたが、これは私がすべて見ている問題です。THE。時間。それはいら立たしくイライラします。うまくいけば、他の人のためにこれに光を当てることができます.

これを自問したことはありますか?:

「私はこれを何時間も機能させようとしてきましたが、それを見ることができないようです。文字列「reducerFractions」を FractionReducer クラスに渡そうとしていますが、どういうわけか、そのクラスに入るとnullになる?

私はJavaを初めて使用し、これはJavaを使用した2番目のプログラムにすぎません。なぜこれが機能しないのかよくわかりません...

親クラス:

public class FractionCalc extends FractionUI
{
//member variables for this class initialized here, all are kept within this class
protected String reducerFractions;
{
/*Paramiters in here math stuff ect*/
finalNum = (int)fin_num;
finalDem = (int)fin_dem;
reducerFractions = finalNum + "/" + finalDem; 
//puts these together in a protected string

System.out.println(reducerFractions); //<- testing here shows its working as needed
reducer.setFraction(finalNum, finalDem);
//overloading the function shows it's working for the two ints as ints themselves
reducer.setFraction(reducerFractions);
int rNum = reducer.getResultsNum();
int rDenom = reducer.getResultsDenom();
String debug = rNum + " " + rDenom;
System.out.println(debug); 
//right here gives back the correct numbers using an int approach
}

子クラス:

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

ターミナル出力

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)

ここには (ほとんどの人にとって) 明らかな問題がありますが、オブジェクトを何度も操作して初めて明らかになります。

4

3 に答える 3

0

ほら、ほら。問題は明らかに共有権限に関するものです。

正しい!

ほとんどの人は、文字列をパブリックに交換するだけでよいと考えるでしょうが、私たちはそうしたくありません。データを保護し、バグ、誤ったエラー、誤報を防ぐために厳重に保護する必要があります。

ここで理解する必要があるのは、子クラスから見る必要があるということです。保護されているため、確かに子クラスはそれを見ることができますが、動的でもあります。だから本質的に変化している。

そうです、情報が流れるように静的に変更するだけで済みます。保護されているため、干渉されることはありません。

これがあなたの何人か、または少なくとも誰かの役に立てば幸いです。

protected static String reducerFractions;
于 2013-06-06T10:10:32.173 に答える
0

reducerFractionsイニシャライザから呼び出されるメソッドからフィールドにアクセスしようとしています。メソッドを呼び出すときにフィールドが完全に初期化されていないと思います。

SSCCE基準を満たすコードを投稿していただけますか?

于 2013-06-06T10:24:04.403 に答える