2016-12-03 6 views
0

私はJavaを学んでいるので、これは私の質問がnoobyである場合、これは私の最初のStackOverflowを使用しているのでごめんなさい。私が今しようとしているのは、変数をあるメソッドから別のメソッド(同じクラス)に渡すことです。その値をグラフに表示できます。私のコードは以下の通りです:変数が0を表示するのはなぜですか?

方法2

private void Average(){ 

     System.out.println(openessAverage); 
     DefaultCategoryDataset bc = new DefaultCategoryDataset();              
     bc.setValue(openessAverage, "Percentage", "Openess"); //Show here 

     JFreeChart jchart = ChartFactory.createBarChart3D("Big 5 Graph", "ID","Percentage" , bc, PlotOrientation.VERTICAL,true,true,false); //chart 
     CategoryPlot plot = jchart.getCategoryPlot(); 
     ChartFrame chartFRM = new ChartFrame("Personality Insight", jchart,true); 
     chartFRM.setVisible(true); 
     chartFRM.setSize(800,600); //Sets JFrame size 
    } 

私はすべてのアイデアなぜそれがコンソールに私に0.0を与え、グラフも0でそのコードを実行すると?

+0

「PersonalityGraph()」がまだ呼び出されていない可能性があります。 – markspace

+0

しかし、私はあなたが同じクラスのそれのためにそれを呼び出す必要はないと思った。 –

+1

これは、実際には、デバッガの使い方に慣れ親しむ良い機会です。これはプログラマとしてあなたの最も貴重なツールになります。 IDE(Eclipse、NetBeansなど)を使用する場合は、デバッグモードでプログラムを実行し、行ごとに文字通りコードをステップ実行することができます。任意の行で一時停止し、変数のランタイム値を調べ、一般的にプログラムの論理的な進行を観察することができます。これを行うと、観察された振る舞いは期待される振る舞いとどこが違うのですか?関連する変数のランタイム値は何ですか? – David

答えて

2

理由はかなりシンプルです

分割整数も整数を返します。オペランドの一方がprobelmあなたは、二重に分裂しているという事実に関係してい

double c = (double)a/b 
0

を倍増させるキャスト:ゼロソリューション

b > a場合 ので

double c = a/b; 

になります整数で指定します。あなたがそれを行うたびに、基本的にJavaは結果を切り捨てます(小数点を削除します)。あなたのケースでは、リストのサイズはおそらく分割数よりも大きいので、0に丸めます。これを修正するには、opennes.size()をdoubleにキャストするか、それ以上のものをキャストしてダブル。

ダブルnum =(倍)num1/num2;

希望すること

関連する問題