为什么变量显示为0?

时间:2016-12-03 18:09:18

标签: java oop variables methods

这是我第一次使用StackOverflow,很抱歉,如果我正在学习Java,那么我的问题很无聊。我现在要做的是将一个变量从一个方法传递到另一个方法(同一个类),这样我就可以在图形中显示该值。我的代码如下:

方法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.任何想法为什么?非常感谢帮助:)

2 个答案:

答案 0 :(得分:2)

原因很简单

除以整数也将返回整数。 因此

double c = a/b;
如果b > a

将为零

解决方案:将其中一个操作数强制转换为

double c = (double)a/b

答案 1 :(得分:0)

问题与你将双重除以整数的事实有关。任何时候这样做,基本上Java会截断结果(删除小数)。在您的情况下,列表的大小可能大于其划分的大小,因此它向下舍入为0.要解决此问题,您可以将opennes.size()转换为double,或者更好的是,只需将该操作转换为double。

Double num =(double)num1 / num2;

希望有所帮助