我需要此应用程序将用户在JTextField
中输入的数字转换为摄氏度,并将其显示在JLabel
中。它似乎在解析输入双精度数据时遇到问题?这是许多人中的一个错误。
任何人都可以帮我弄清楚什么是错的? (我在测试时只在文本字段中输入了两个值,但它仍然不会将其更改为双倍。)
public class TempConvertGUI extends JFrame{
private JLabel result;
private final JTextField input;
public TempConvertGUI()
{
super("Fahrenheit to Celsius Application");
setLayout(new FlowLayout());
//TempConvert convert=new TempConvert();
input=new JTextField(10);
input.setToolTipText("Enter degrees in fahrenheit here.");
input.addActionListener(new ActionListener()
{
private double temp;
private String string;
@Override
public void actionPerformed(ActionEvent event) {
if(event.getSource()==input)
{
remove(result);
if(event.getActionCommand()==null)
result.setText(null);
else
{
temp=Double.parseDouble(event.getActionCommand());
string=String.format("%d degrees Celsius", convertToCelsius(temp));
result.setText(string);;
}
add(result);
}
}
});
add(input);
result=new JLabel();
add(result);
}
private double convertToCelsius(double fahrenheit)
{
return (5/9)*(fahrenheit-32);
}
}
答案 0 :(得分:3)
temp=Double.parseDouble(input.getText());
)%f
解析浮点值result
JLabel,它已添加到UI中 - 只需设置文本(5/9)
是整数数学,如果您想要浮点数学,则将其中一个数字指定为正确的数据类型:(5/9d)
答案 1 :(得分:2)
看来你得到了这个例外
transition: all 1s ease;
这是因为这行代码
java.util.IllegalFormatConversionException: d != java.lang.Double
string=String.format("%d degrees Celsius", convertToCelsius(temp));
表示整数;您希望将%d
用于双精度(%f
返回双精度数。)
所以将其改为
convertToCelsius
答案 2 :(得分:0)
而不是select *
from (
select max(id) id
from `product`
group by `id_node`
) q
inner join `product` p
on q.id = p.id
left join image i
on p.id_node = i.id_node
where `product_publish` = 1
and i.main = 1
and `product_type_item` = $type_item
and product_status = 1
order by product_position asc
,您应该从temp=Double.parseDouble(event.getActionCommand());
解析输入。