2016-12-03 89 views
0

這是我第一次使用StackOverflow,所以對不起,如果我的問題是白癡,因爲我正在學習Java。我現在要做的是將一個方法的變量傳遞給另一個方法(同一個類),以便我可以在圖中顯示該值。我的代碼如下:爲什麼變量顯示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

原因很簡單

除法整數也會返回一個整數。 因此

double c = a/b; 

將是零,如果b > a

解決方案:投一個操作數翻番

double c = (double)a/b 
0

的萬阿英,蔣達清是與事實,你是分裂的雙重做由一個整數。任何時候你這樣做,基本上Java都會截斷結果(去掉小數)。在你的情況下,列表的大小可能大於它的分割大小,所以它會舍入到0.要解決這個問題,你可以將opennes.size()強制轉換爲double,或者更好,只需將該操作轉換爲雙。

Double num =(double)num1/num2;

希望可以幫助