Java 如何找到数字中最常出现的数字

Java 如何找到数字中最常出现的数字,java,numbers,digit,Java,Numbers,Digit,如何在数字中找到最常用的数字。例如,我有222244,最常出现的数字是2。请帮忙 我有一些类似的东西,但我并不真正理解方法的第一部分,intj=liczba.charAt(I)-47为什么47在这里?有人能解释吗 int digits[] = new int [10]; for(int i = 0; i <liczba.length(); i++){ int j = liczba.charAt(i) - 47; digits[j]++; } int di

如何在数字中找到最常用的数字。例如,我有222244,最常出现的数字是2。请帮忙

我有一些类似的东西,但我并不真正理解方法的第一部分,
intj=liczba.charAt(I)-47为什么47在这里?有人能解释吗

int digits[] = new int [10];         
for(int i = 0; i <liczba.length(); i++){
    int j = liczba.charAt(i) - 47;
    digits[j]++;
}

int digit = 0; 
int count = digits[0];
for(int i=1;i <10; i++){
    if(digits[i] >count){
        count = digits[i];
        digit = i;
    }
}
return digit;
int位[]=newint[10];
对于(inti=0;i

int j = liczba.charAt(i) - 47;
将第(i+1)个字符
liczba
的字符代码减去47。参考an,47映射到“/”,其ASCII代码比“0”小一个

请注意,我假设以下内容,因为您的代码似乎是用Java编写的

  • 字符串索引从零开始,即第一个字符的索引为0,第二个字符的索引为1,依此类推
  • 字符和整数似乎可以互换使用,因为字符内部由整数表示,即字符的ASCII码
  • 也就是说,
    char
    类型实际上是一个整数类型,范围较小
因此,此代码将字符“0”转换为整数1,“1”转换为整数2,以此类推

例如,当第一个字符(
liczba.charAt(0)
)是字符
0
liczba.charAt(0)
返回字符
'0'
,这也等于数字
48
,因为
'0'
的ASCII码为48

用47减去48得到1,因此它将字符“
0
”转换为整数1

然而似乎此代码可能会导致数组索引越界错误(假设数组索引为零)。当数字为
'9'
时,此行返回10。这将导致上述错误。除非此代码的语言数组是基于1的。但是,即使在这种情况下,此行也会返回10

int count = digits[0];
这段代码似乎失败了,因为

我相信这句话应该读出来

int j = liczba.charAt(i) - 48;
因此,字符
'0'
被转换为数字0

如果这仍然打扰您,您可以将此行更改为

int j = liczba.charAt(i) - '0';
因此它会更清晰。减去
'1'
的代码,
'0'
的代码得到整数1,足够清晰:)

int j = liczba.charAt(i) - 47;
将第(i+1)个字符的字符代码减去47。参考an,47映射到“/”,其ASCII代码比“0”小一个

请注意,我假设以下内容,因为您的代码似乎是用Java编写的

  • 字符串索引从零开始,即第一个字符的索引为0,第二个字符的索引为1,依此类推
  • 字符和整数似乎可以互换使用,因为字符内部由整数表示,即字符的ASCII码
  • 也就是说,
    char
    类型实际上是一个整数类型,范围较小
因此,此代码将字符“0”转换为整数1,“1”转换为整数2,以此类推

例如,当第一个字符(
liczba.charAt(0)
)是字符
0
liczba.charAt(0)
返回字符
'0'
,这也等于数字
48
,因为
'0'
的ASCII码为48

用47减去48得到1,因此它将字符“
0
”转换为整数1

但是这段代码似乎会导致数组索引越界错误(假设数组索引为零)。当数字为
'9'
时,此行返回10。这将导致上述错误。除非此代码的语言数组是基于1的。然而,即使在这种情况下,这条线

int count = digits[0];
这将彻底失败。这段代码似乎失败了

我相信这句话应该读出来

int j = liczba.charAt(i) - 48;
因此,字符
'0'
被转换为数字0

如果这仍然打扰您,您可以将此行更改为

int j = liczba.charAt(i) - '0';

这样就更清楚了。减去
'1'
的代码,
'0'
得到整数1,足够清楚:)

别忘了用你正在使用的语言标记它。别忘了用你正在使用的语言标记它。你是对的,应该有48个。但我真的不明白(你说得对,应该有48个。但我真的不明白(