nyoj,数字分割

1、实数的整数部分按照每三个数字用逗号分隔开(整数部分的高位有多余的0时,需先将多余的0过滤后,再进行数字分隔,如:0001234567 输出结果为1,234,567.00)

2、小数部分保留两位小数(四舍五入)

3、如果该数是负的,则在输出时需用括号将分隔后的数字括起来,例如:-10005.1645的输出结果为(10,005.16)
“`

package nyoj;
import java.util.Scanner;
/**
*
* @luxiaoyue
*
*/
public class NumberFenge {
public static void main(String[] args) {
String[] s = new String[100]; //建一个数组 用来存 要输入的数
Scanner scanner = new Scanner(System.in);
int i =0; // i代表数组位置
String str1 = scanner.next();//输入第一个数

    while(true) {   
        if(str1.equals("efo")) {    //判断 输入的是不是 efo ,如果是就跳出,
            break;
        }else {                         //如果不是就存到数组里
            s[i] = str1;
            i++;
            str1 = scanner.next();
        }


    }


    for(int j =0;j<100;j++) {
        if(s[j]==null) {
            break;
        }else {
            posFen(s[j]);   //当数组 中第j 个数不为null时就把字符串 转化为数字
        }
        System.out.println();
    }


}



public static void posFen(String str) {
    if(str.contains(".")) {
        String[] StrArray = str.split("\\.");    //以  . 把数字的整数 和 小数部分分开,作为字符串 存入数组 strArrayz中
        int result = Integer.parseInt(StrArray[0]);//把整数部分的字符串 转化为  整数
        double d=  Math.pow(10, StrArray[1].length());
        double result1 = Integer.parseInt(StrArray[1])/d;// 把小数部分的字符串 转化为  小数(比如小数部分是123,只要把123除以1000得到0.123)
        fenGe(result,result1);  //把整数 和 小数 部分 传到 fenGe()函数中,按格式输出
    }else {
        int result = Integer.parseInt(str);
        fenGe(result,0.0);
    }

}

public static void fenGe(int a,double b) {
    int[] c = new int[100];  //建一个数组用来存放 三位三位的 数字 
    int i =0;
    boolean flag = true;  //数字为 正时 为 真
    if(a>=1000||a<=-1000) {   //当数字大于1000或小于-1000时需要按 xxx,xxx这种格式输出
        if(a<-1000) {   //a是 负数时 flag 为 false ,把a 变成+a ,在输出时加()就可以了
            a = -a;  
            flag = false;
        }
        while(a>1000) {   //a%1000  如1234567%1000 = 567 存到 数组c,a = 1234,a%1000=234 存入数组
                        // a = 1234/100 = 1, 不需要再分割了 直接把最后一个 输出来
            c[i] = a%1000;
            a = a/1000;
            i++;
        }
        if(flag) {
            System.out.print(a+",");

        }else {
            System.out.print("("+a+",");
        }

        for(int j =i-1;j>0;j--) {

            System.out.print(c[j]+",");   //倒着输出
        }

        if(flag) {
            System.out.printf("%.2f",(c[0]+b));
        }else {
            System.out.printf("%.2f)",(c[0]+b));
        }

    }else {
        if(a>0) {
            System.out.printf("%.2f",(a+0.0));

        }else {
            a = -a;
            System.out.printf("(%.2f)",(a+0.0));

        }


    }

}

}

这里写图片描述

猜你喜欢

转载自blog.csdn.net/Lu_Xiao_Yue/article/details/81432773