我有这样一个关于swing有趣的需求,不知道哪位大牛能帮解决一下,小弟万分崇拜+不胜感激!

需求:用socket 网络编程,从输入框(也就是图中的2)中输入10/3,机器检测到会产生2位以上的小数时,就会询问要保留几位小数,客户端在输入框再输入“3位”,机器就会按照该要求输出结果,只用考虑做一种情况,不用考虑扩展,界面代码我已经贴上面了,部分路径什么的可能要很简单的修改一下,这个需求说难不难,说简单不简单,小弟才疏学浅,还请大神们不吝赐教啊,如果觉得懒得写,大家可以直接在楼下讨论,小弟3个小时内秒回大笑



 

我不想下你的代码去看,如果你能看懂下面的代码,你集成起来绝对不是问题。
PS:下面有几个地方需要你稍微注意一下,自己看...
[code="java"]
public class DoubleFormat {

/**
 * @param args
 */
public static void main(String[] args) {
    //double doubleValue = 10/3;     //int整形计算结果是3.0
    //double doubleValue1 = 10/3.0;  //double浮点数计算结果是3.3333333333333335(16位小数)
    //System.out.println("计算后浮点数的值:"+doubleValue1);
    //String stringValue1 = String.valueOf(doubleValue1);
    //System.out.println("转化为字符串的值:"+stringValue1);
    double dividend = 10;
    double divisor = 3.0;
    int decimal = 2;
    boolean isNeedAll = true;

    System.out.println("被除数:"+dividend +", 除数:"+divisor+",保留小数位:"+decimal);
    System.out.println("计算完转化为字符串的值:"+calcWithFormat(dividend, divisor, decimal, isNeedAll));
}

/**
 * 带格式化的计算结果输出
 * @param dividend 被除数
 * @param divisor    除数
 * @param decimal  保留的小数位数 
 * @param isNeedAll  是否所有的计算结果都进行格式化
 * @return
 */
public static String calcWithFormat(double dividend, double divisor, int decimal, boolean isNeedAll){
    String result = null;
    final double EPSINON = 0.000001;
    if((divisor >= -EPSINON)  &&  (divisor <= EPSINON)){
        return "除数不能为0"; 
    }

    double doubleValue = dividend/divisor; 
    String stringValue = String.valueOf(doubleValue);
    java.text.DecimalFormat df = new java.text.DecimalFormat("#.00");  

    if(isNeedAll){
        result = df.format(doubleValue);
    }else{
        if(stringValue.contains(".") && stringValue.substring(stringValue.lastIndexOf(".")).length() > decimal){
            result = df.format(doubleValue);
        }else{
            result = String.valueOf(doubleValue);
        }
    }

    return result;
}

}
[/code]