我正在编写一个简单的程序,它返回一组中每个数字的百分比。但由于某种原因,除了最后一个之外,我无法使数字正确返回......
我不明白为什么它总是为除最后一个数字之外的每个数字打印 0%。
这是代码:
public class MainWindow extends JFrame implements ActionListener {
private JButton theButton = new JButton("Calculer sur 100");
private JTextField textField = new JTextField("");
private JTextArea text = new JTextArea("");
private JScrollPane scroller = new JScrollPane(text);
public MainWindow() {
setLayout(new BorderLayout());
setTitle("Calculateur de pourcentage");
setSize(400, 500);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
layoutManagement();
setVisible(true);
}
private void layoutManagement() {
text.setEditable(false);
theButton.addActionListener(this);
getContentPane().add(scroller, BorderLayout.CENTER);
getContentPane().add(textField, BorderLayout.NORTH);
getContentPane().add(theButton, BorderLayout.SOUTH);
}
private int checkForNumber()
{
int numl;
try{
numl = Integer.parseInt(textField.getText());
}catch(NumberFormatException e)
{
text.setText("Please try with number...");
System.out.println("Error in number format. Returning 0");
return 0;
}
System.out.println("numl = " + numl);
return numl;
}
private double doMath(int i, int num)
{
System.out.println("printing result = " + (i / num) * 100);
return (i / num) * 100;
}
private void print100(int num) {
for (int i = 1; i < num + 1; i++)
{
text.setText(text.getText() + "\n" + i + " : " + doMath(i, checkForNumber()));
}
}
public void actionPerformed(ActionEvent e) {
if (e.getSource() == theButton) {
text.setText("");
print100(checkForNumber());
}
}
有什么想法吗?
最佳答案
这是整数除法的经典案例。两个整数相除时,结果是一个整数。这意味着 2/3
是 0。乘以 100,它仍然是 0。
不要使用(i/num) * 100
,而是使用i * 100/num
。
这样,您就可以将 200 除以 3,得到您要查找的 66。
或者,您可以使用浮点进行计算:
return ((double) i / num) * 100;
通过转换,i
变为 double,这意味着 i/num
被计算为 double 而不是 int。
关于java - 函数未正确返回数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26580684/