日期:2014-05-17  浏览次数:20722 次

新学JAVA请教一个问题
import javax.swing.JOptionPane;
public class Test
{
  public static void main( String args[] ) 
  {
  String input ;
  float a = Float.parseFloat(input);
  input = JOptionPane.showInputDialog("请输入一个浮点类型的数");
  JOptionPane.showMessageDialog(null,"的整数部分是:"+(int)a,"结果",JOptionPane.PLAIN_MESSAGE);
  }
}

想输入一个浮点类型的数 然后输出它的整数部分 用这种方法为什么不行?
虚心求教各位了!

------解决方案--------------------
1、input变量未初始化;
2、float a = Float.parseFloat(input);这句代码在你未获取到输入的值使已经执行了

------解决方案--------------------
Java code

import javax.swing.JOptionPane;

public class TestInputDialog {
    public static void main(String[] args) {
    String input = JOptionPane.showInputDialog("请输入一个浮点类型的数");
    // 不行,比如: 输入:123456789.123456789;输出:123456792
    // float a = Float.parseFloat(input);
    // JOptionPane.showMessageDialog(null,"的整数部分是:"+(int)a,"结果",JOptionPane.PLAIN_MESSAGE);

    String output = input.substring(0, input.contains(".") ? input
        .indexOf(".") : input.length());
    JOptionPane.showMessageDialog(null, "的整数部分是:" + output, "结果",
        JOptionPane.PLAIN_MESSAGE);
    }
}

------解决方案--------------------
很简单,要input变量 float转int型你得先让人知道你的input是什么东西。
String input ;
float a = Float.parseFloat(input);这里input就是null。
------解决方案--------------------
public static void main(String[] args)
{
String inputMessage=JOptionPane.showInputDialog("请输入一个浮点类型的数"); 
Double dou = 0.0D;
if(inputMessage.contains("."))
{
dou = Double.parseDouble(inputMessage.split("\\.")[1]); 
}

JOptionPane.showMessageDialog(null,inputMessage+"的整数部分是:"
+(int)Math.round(Double.parseDouble(inputMessage))
+" 小数部分是"+Math.round(dou),"结果",JOptionPane.PLAIN_MESSAGE);

}
这样Ok!
------解决方案--------------------
Java code
 String input = JOptionPane.showInputDialog("请输入一个浮点类型的数");
         BigDecimal a = new BigDecimal(input);
         BigDecimal b = a.subtract(new BigDecimal(a.intValue()));
          JOptionPane.showMessageDialog(null,input+"的整数部分是:"+a.intValue()+" 小数部分是"+b,"结果",JOptionPane.PLAIN_MESSAGE);