Я не могу заставить расчеты работать - PullRequest
0 голосов
/ 30 марта 2011

У меня есть калькулятор, который рассчитывает объем и результаты возвращаются как «0»

 JButton btnCalculateVlmn = new JButton("Calculate Hot Tub Volume");  
        btnCalculateVlmn.addActionListener(new ActionListener()  
        {  
            public void actionPerformed(ActionEvent arg0)  
            {  
                double width = 0, length = 0, depth = 0, volume = 0;  
                String lengthString, widthString, depthString;  
                lengthString = hotTubLengthText.getText();  
                widthString = hotTubWidthText.getText();  
                depthString = hotTubDepthText.getText();  
                try 
                {  
                    if (rdbtnRoundTub.isSelected())  
                    {  
                        volume = Math.PI * Math.pow(length / 2.0, 2) * depth;  
                    }  
                    else 
                    {  
                        volume = Math.PI * Math.pow(length * width, 2)  
                                * depth;  
                    }  
                    DecimalFormat formatter = new DecimalFormat("#,###,###.###");  
                    hotTubVolumeText.setText("" + formatter.format(volume));  
                }  
                catch (NumberFormatException e)  
                {  
                    labelTubStatus  
                            .setText("Fill in all fields");  
                }  
            }  
        });  
        btnCalculateVlmn.setBounds(20, 200, 180, 20); 
        hotTubs.add(btnCalculateVlmn);  
        JButton Exit = new JButton("Exit");  
        Exit.setBounds(220, 200, 80, 20);  
        Exit.addActionListener(this);  
        hotTubs.add(Exit);  
    }

Ответы [ 5 ]

3 голосов
/ 30 марта 2011

глубина объявлена ​​как 0 и никогда не перезаписывается ... поэтому громкость всегда равна 0. Я думаю, вы должны сделать что-то вроде:

...
double width = 0, length = 0, depth = 0, volume = 0;  
String lengthString, widthString, depthString;  
lengthString = hotTubLengthText.getText();  
widthString = hotTubWidthText.getText();  
depthString = hotTubDepthText.getText();  
depth = Double.valueOf(depthString);
length = Double.valueOf(lengthString);
width = Double.valueOf(widthString);
....
1 голос
/ 30 марта 2011

у вас есть depth = 0 и

anything * 0 = 0
1 голос
/ 30 марта 2011

Вы забыли преобразовать строки (lengthString, widthString и depthString) в двойные числа и присвоить их своим переменным (length, width и depth).

0 голосов
/ 30 марта 2011

В обеих ветвях вашего основного if условия выражения заканчиваются на * depth. Однако эта переменная depth, кажется, установлена ​​в 0 и не установлена ​​в что-либо еще. Таким образом, объем всегда будет 0, так как все, что вы умножите на 0, будет равно 0.

Возможно, вы хотели использовать depthString. Примерно так:

depth = Integer.parseInt(depthString);
if (rdbtnRoundTub.isSelected())  
{  
   volume = Math.PI * Math.pow(length / 2.0, 2) * depth;  
}  
else 
{  
   volume = Math.PI * Math.pow(length * width, 2)  * depth;  
}  
0 голосов
/ 30 марта 2011

вы забыли преобразовать ваши строки из полей ввода в double.

вы получите 0 в результате, потому что вы установили длину и ширину в 0

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...