应用程序崩溃,并出现“ java.lang.ArrayIndexOutOfBoundsException:length = 1; index = 1”仅在真实设备上

问题描述 投票:-2回答:1

我正在编写一个函数,例如将1000替换为1K,依此类推。我不想在点后显示"00",所以我拆分了变量,如果第二部分等于“ 00”,则仅显示第一部分。

此工作与运行Android 10的模拟器上的预期工作相同。在我的真实设备(P4XL,Android 10)上,它崩溃并显示标题中的行。

我知道此功能是导致崩溃的原因,因为当我注释掉它时,它也可以在我的真实设备上运行,只是没有正确显示数字。

为什么这样做?

public String number_uppercase(int input){
    double input_double = (double) input;
    if (input < 1000){
        number_uppercase_cache = df.format(input_double);
        number_uppercase_ending = "";
    }
    if (input >= 1000 && input < 1000000){
        number_uppercase_cache = df.format(input_double/1000);
        number_uppercase_ending = " K";
    }
    if (input >= 1000000 && input < 1000000000){
        number_uppercase_cache = df.format(input_double/1000000);
        number_uppercase_ending = " mio";
    }
    if (input >= 1000000000){
        number_uppercase_cache = df.format(input_double/1000000000);
        number_uppercase_ending = " mrd";
    }

    number_uppercase_split_part_1 = number_uppercase_cache.split("\\.")[0];
    number_uppercase_split_part_2 = number_uppercase_cache.split("\\.")[1];

    if(number_uppercase_split_part_2.equals("00")){
        number_uppercase_output = number_uppercase_split_part_1 + number_uppercase_ending;
    } else {
        number_uppercase_output = number_uppercase_split_part_1 + "." + number_uppercase_split_part_2 + number_uppercase_ending;
    }
    return number_uppercase_output;
}
android variables split android-emulator
1个回答
0
投票

请尝试以下符合您目的的功能

private String formatNumber(long _number) {
    if (_number< 1000) 
        return "" + _number ;
    else
    int exp = (int) (Math.log(_number) / Math.log(1000));
    return String.format("%.1f %c", _number/ Math.pow(1000, exp), "kMGTPE".charAt(exp-1));
}
© www.soinside.com 2019 - 2024. All rights reserved.