2016-11-25 18 views
0

私はパーセント値を円グラフで表示しようとしています。これは、Personalityクラスのパーセンテージ値とChartクラスが表示する必要がある場所ですそれ。構造は以下の通りですマイコード:あるクラスから別のクラスにオブジェクトを転送する方法 - JAVA

Personality.JAVA

Tree C = gson.fromJson(profile.toString(), Tree.class); 

       Tree.SubTree t = C.getTree(); 
       ArrayList<Children> mc = t.getChildren(); 
       Children c1 = mc.get(0); 

       ArrayList<Children1> c2 = c1.getChildren(); 
       Children1 obj1 = c2.get(0); 

       private Children1 obj1; //ERROR-ILEGAL START OF EXPRESSION 


       public Children1 getObj1(){ 
       return this.obj1; 
       } 

     /**  ArrayList<child2> c3 = obj1.children; 
       child2 obj2 = c3.get(0); 

       ArrayList<child3> c4 = obj2.children; 
       child3 obj3 = c4.get(0); **/ 


       System.out.println(obj1.getPercentage()); //ERROR - IDENTIFIER EXPECTED 

Children1.JAVA

public class Children1 { 
    private String category; 
    private String id; 
    private String name; 
    private double percentage; 
    private double sampling_error; 
    private ArrayList<Children2> children; 

    public Double getPercentage() { 
    return percentage; 
    } 
/** 
* 
* @param percentage 
* The percentage 
*/ 
    public void setPercentage(Double percentage) { 
    this.percentage = percentage; 
    } 
} 

Tree.JAVA(このクラスは必要ですが、ここにあるかどうかわかりません)

public class Tree { 
    private SubTree tree; 
    @Override 
    public String toString() { 
     return "ID: " + id + "\n" + "Name: "+ "\n" + tree+ "\n" ; 
    } 
    class SubTree{ 
    private String id; 
    private String name; 
    private ArrayList<Children> children; //Gets Arraylist from Class - Children 


    public ArrayList<Children> getChildren() { 
    return children; 
    } 

    public void setChildren(ArrayList<Children> children) { 
    this.children = children; 
    }  
    } 

    public SubTree getTree() { 
    return tree; 
    } 

    public void setTree() { 
    this.tree = tree; 
    } 

} 

CHARTのCLASS

private PieDataset createDataset(){ 
    Personality m = new Personality(); 
    // Personality.class = Personality(); 
    DefaultPieDataset result = new DefaultPieDataset(); 
    result.setValue("Value1",m.obj1); //attempted to get obj1 from Persoanlity Class 
    result.setValue("Linux", 10); 
    result.setValue("Mac", 25); 
    return result; 
} 

だから、全体的なプログラムです - 通常の段落は、Java値グラフを生成を使用した後のjavaに解析するために、次にJSONに変換します。したがって、この場合、パーセント値obj1Chart classに表示されます。

は、あなたたちは自分の時間のための質問とありがとうを理解願っています:)

+1

へだから、問題はありますか? –

+0

私は@Luminous_Devを持っています - あなたはデータを転送する必要があります。だから、おそらくコンストラクタやメソッドのパラメータを使って、そうするのを妨げているのでしょうか?また、あなたのコードを実行可能な[mcve]/[sscce](http://sscce.org)に集約することを検討してください。 –

+0

Chartクラスでは、m.obj1の部分にカーソルを置いたときにシンボルを見つけることができません。 –

答えて

1

あなたはPersonalityクラスからChildren1オブジェクトが見えるようにする必要があります。現時点ではobj1はローカル変数であり、そのスコープはそのローカルメソッドにのみ表示されます

パーソナリティでは、フィールドがChildren1 obj1の場合はローカルメソッドまたはコンストラクタで設定できます。 Children1 obj1の範囲は、公開されたか、好ましくは、それはgetterメソッドを持っていた場合、あなたはあなたのPersonalityクラスが

public Personailty { 
    .... 
} 
のようになりますと仮定すると Personality m = new Personality();

すなわちChildren1 obj1がコンストラクタで作成されていることを想定しChart classからそれを読むことができました

それはあなたがパーソナリティCLAに属性をOBJ1と呼ばれている場合は、以下の

public Personailty { 
    .... 
    private Children1 obj1; 

    public Children1 getObj1(){ 
     return this.obj1; 
    } 
} 
+0

答えをありがとう!しかし、私はどのようにスコープをPublicにするか分かりません。私はChildren1のgetterを作成してobj1として返すように試みましたが、うまくいきません。 –

+0

私はあなたのために私の答えを更新しました。また、あなたの質問を編集して、「人格」コードがどこにあるかを表示してください。コンストラクター、ローカルメソッド –

+0

* Children1はarraylistですか?** ** Children1はクラスです。ご質問ください** –

0

解決策のように見えるように、あなたは、追加するだろうss。

パーソナリティクラスは持っている必要があります。

private Children1 obj1; 

public Children1 getObj1(){ 
    return this.obj1; 
} 

変更これはあなたのコード

ArrayList<Children1> c2 = c1.getChildren(); 
Children1 obj1 = c2.get(0); 

ArrayList<Children1> c2 = c1.getChildren(); 
this.obj1 = c2.get(0); 

そして、あなたのチャートクラスの

DefaultPieDataset result = new DefaultPieDataset(); 
result.setValue("Value1",m.getObj1()); //attempted to get obj1 from Persoanlity Class 
関連する問題