Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在java中分割数字?_Java - Fatal编程技术网

如何在java中分割数字?

如何在java中分割数字?,java,Java,我正在尝试分割号码,但不知道如何分割 我引用了这个链接 假设我有一个数字12345678 使用上面的链接,我将其拆分为3个位置。因此输出变成12345678 但是我希望它是12345678并且我希望以12.345.678的形式获取拆分的字符串 有人能帮我吗?一种懒惰的方法是反转字符串,应用上面的方法,然后再次反转 您可以使用,如中所示 当然,我假设你想要以3s分割,而一种懒惰的方法是反转字符串,应用上面的方法,然后再次反转 您可以使用,如中所示 当然,我假设您希望使用链接中的解决方案,以3s为

我正在尝试分割号码,但不知道如何分割

我引用了这个链接

假设我有一个数字
12345678

使用上面的链接,我将其拆分为3个位置。因此输出变成
123
456
78

但是我希望它是
12
345
678
并且我希望以
12.345.678
的形式获取拆分的字符串


有人能帮我吗?

一种懒惰的方法是反转字符串,应用上面的方法,然后再次反转

您可以使用,如中所示


当然,我假设你想要以3s分割,而一种懒惰的方法是反转字符串,应用上面的方法,然后再次反转

您可以使用,如中所示


当然,我假设您希望使用链接中的解决方案,以3s为单位拆分组,我会将其重新表述为以下内容(已测试!):


使用您链接中的解决方案,我会将其重新表述为以下内容(已测试!):


text包提供了格式化数字的所有合理选项

    DecimalFormat f = new DecimalFormat("#,###");
    DecimalFormatSymbols fs = f.getDecimalFormatSymbols();
    fs.setGroupingSeparator('.');
    f.setDecimalFormatSymbols(fs);
    String s = f.format(12345678);
    System.out.println(s);
输出

12.345.678
直接使用DecimalFormat非常灵活,但通常我们可以使用较短的版本

String s = NumberFormat.getNumberInstance(Locale.GERMAN).format(12345678);
它产生相同的字符串

12.345.678
不同的国家对数字(和日期)的格式有不同的规则。通常我们希望我们的程序国际化/本地化,并使用默认的语言环境版本

NumberFormat.getNumberInstance().format(number);

text包提供了格式化数字的所有合理选项

    DecimalFormat f = new DecimalFormat("#,###");
    DecimalFormatSymbols fs = f.getDecimalFormatSymbols();
    fs.setGroupingSeparator('.');
    f.setDecimalFormatSymbols(fs);
    String s = f.format(12345678);
    System.out.println(s);
输出

12.345.678
直接使用DecimalFormat非常灵活,但通常我们可以使用较短的版本

String s = NumberFormat.getNumberInstance(Locale.GERMAN).format(12345678);
它产生相同的字符串

12.345.678
不同的国家对数字(和日期)的格式有不同的规则。通常我们希望我们的程序国际化/本地化,并使用默认的语言环境版本

NumberFormat.getNumberInstance().format(number);

下面是一个拆分int值并以指定格式返回字符串的方法:

public static String split( int n ) {
    String result = "", s = Integer.toString( n );
    while ( s.length() > 3 ) {
        result = s.substring( s.length() -3, s.length() ) + ((result.length() > 0)? "." + result : "" );
        s = s.substring( 0, s.length() -3 );
    }
    return s + "." + result;
}
输入:

12345678
输出:

12.345.678

下面是一个拆分int值并以指定格式返回字符串的方法:

public static String split( int n ) {
    String result = "", s = Integer.toString( n );
    while ( s.length() > 3 ) {
        result = s.substring( s.length() -3, s.length() ) + ((result.length() > 0)? "." + result : "" );
        s = s.substring( 0, s.length() -3 );
    }
    return s + "." + result;
}
输入:

12345678
输出:

12.345.678

如果是字符串,请使用StringBuilder或StringBuffer。代码如下:

public class SplitNumber {
    public static void main(String[] args){
        int number = 12345678;

        String numberStrBefore = Integer.toString(number);

        StringBuffer numberStrAfter = new StringBuffer();
        numberStrAfter.append(numberStrBefore.charAt(0));
        numberStrAfter.append(numberStrBefore.charAt(1));
        numberStrAfter.append('.');
        numberStrAfter.append(numberStrBefore.charAt(2));
        numberStrAfter.append(numberStrBefore.charAt(3));
        numberStrAfter.append(numberStrBefore.charAt(4));
        numberStrAfter.append('.');
        numberStrAfter.append(numberStrBefore.charAt(5));
        numberStrAfter.append(numberStrBefore.charAt(6));
        numberStrAfter.append(numberStrBefore.charAt(7));

        System.out.println("Number Before: " + numberStrBefore);
        System.out.println("Number After: " + numberStrAfter.toString());
    }
}
这里有一个方法也是一样的:

public class SplitNumber {
    public static void main(String[] args){
        int number = 12345678;
        int[] split = {2,3,3}; //How to split the number

        String numberStrAfter = insertDots(number, split);

        System.out.println("Number Before: " + number);
        System.out.println("Number After: " + numberStrAfter);
    }

    public static String insertDots(int number, int[] split){
        StringBuffer numberStrAfter = new StringBuffer();
        String numberStr = Integer.toString(number);

        int currentIndex = 0;       
        for(int i = 0; i < split.length; i++){
            for(int j = 0; j < split[i]; j++){
                numberStrAfter.append(numberStr.charAt(currentIndex));
                currentIndex++;
            }
            numberStrAfter.append('.');
        }
        numberStrAfter.deleteCharAt(numberStrAfter.length()-1); //Removing last "."

        return numberStrAfter.toString();
    }
}
公共类拆分编号{
公共静态void main(字符串[]args){
整数=12345678;
int[]split={2,3,3};//如何分割数字
字符串numberstratter=插入点(数字,分割);
System.out.println(“前面的编号:+编号”);
System.out.println(“后面的数字:“+numberstratter”);
}
公共静态字符串insertDots(整数编号,整数[]拆分){
StringBuffer numberstratter=新StringBuffer();
字符串numberStr=Integer.toString(数字);
int currentIndex=0;
对于(int i=0;i

使用该方法,此版本允许您将任何数字拆分为所需的任何格式,只需将“split”变量更改为要将字符串拆分为的格式。(例如:将12345678拆分为:1.1234.5.67.8意味着“拆分”必须设置为{1,4,1,2,1})。

如果是字符串,请使用StringBuilder或StringBuffer。代码如下:

public class SplitNumber {
    public static void main(String[] args){
        int number = 12345678;

        String numberStrBefore = Integer.toString(number);

        StringBuffer numberStrAfter = new StringBuffer();
        numberStrAfter.append(numberStrBefore.charAt(0));
        numberStrAfter.append(numberStrBefore.charAt(1));
        numberStrAfter.append('.');
        numberStrAfter.append(numberStrBefore.charAt(2));
        numberStrAfter.append(numberStrBefore.charAt(3));
        numberStrAfter.append(numberStrBefore.charAt(4));
        numberStrAfter.append('.');
        numberStrAfter.append(numberStrBefore.charAt(5));
        numberStrAfter.append(numberStrBefore.charAt(6));
        numberStrAfter.append(numberStrBefore.charAt(7));

        System.out.println("Number Before: " + numberStrBefore);
        System.out.println("Number After: " + numberStrAfter.toString());
    }
}
这里有一个方法也是一样的:

public class SplitNumber {
    public static void main(String[] args){
        int number = 12345678;
        int[] split = {2,3,3}; //How to split the number

        String numberStrAfter = insertDots(number, split);

        System.out.println("Number Before: " + number);
        System.out.println("Number After: " + numberStrAfter);
    }

    public static String insertDots(int number, int[] split){
        StringBuffer numberStrAfter = new StringBuffer();
        String numberStr = Integer.toString(number);

        int currentIndex = 0;       
        for(int i = 0; i < split.length; i++){
            for(int j = 0; j < split[i]; j++){
                numberStrAfter.append(numberStr.charAt(currentIndex));
                currentIndex++;
            }
            numberStrAfter.append('.');
        }
        numberStrAfter.deleteCharAt(numberStrAfter.length()-1); //Removing last "."

        return numberStrAfter.toString();
    }
}
公共类拆分编号{
公共静态void main(字符串[]args){
整数=12345678;
int[]split={2,3,3};//如何分割数字
字符串numberstratter=插入点(数字,分割);
System.out.println(“前面的编号:+编号”);
System.out.println(“后面的数字:“+numberstratter”);
}
公共静态字符串insertDots(整数编号,整数[]拆分){
StringBuffer numberstratter=新StringBuffer();
字符串numberStr=Integer.toString(数字);
int currentIndex=0;
对于(int i=0;i

使用该方法,此版本允许您将任何数字拆分为所需的任何格式,只需将“split”变量更改为要将字符串拆分为的格式。(例如:将12345678拆分为:1.1234.5.67.8意味着“拆分”必须设置为{1,4,1,2,1})。

您是在尝试格式化一个整数,还是实际上有一个字符串?这个数字可能有多少长度?你想让分隔符取决于区域设置吗?我有整数,我正在将其转换为字符串。不,我不想根据区域设置将其分隔。我只想要点(.)我提到了一个链接a用于此。你是在尝试格式化整数,还是真的有字符串?这个数字可能有多少长度?你想让分隔符取决于区域设置吗?我有整数,为了拆分,我将其转换为StringNo。我不想根据区域设置将其拆分。我只想要点(.)我提到了一个链接,我正在使用它。完美的解决方案。谢谢你的完美解决方案。谢谢你,千万不要把字符串连在一起。改用StringBuilder。也可以使用整数告诉您在字符串中的位置,而不是一次又一次地为
s
创建新字符串。切勿在循环中将字符串连接在一起。改用StringBuilder。也可以使用整数