Java-使用整数
编写一个名为digitsInARow的静态方法,该方法将整数n作为参数,并返回以10为基数表示的n的行中出现的最大位数。对于许多数字,答案是1,因为它们没有匹配的相邻数字。但对于355585这样的数字,答案是4,因为一行中出现了四次数字5。不允许使用字符串来解决此问题。您可以假定传递给该方法的值大于或等于0Java-使用整数,java,Java,编写一个名为digitsInARow的静态方法,该方法将整数n作为参数,并返回以10为基数表示的n的行中出现的最大位数。对于许多数字,答案是1,因为它们没有匹配的相邻数字。但对于355585这样的数字,答案是4,因为一行中出现了四次数字5。不允许使用字符串来解决此问题。您可以假定传递给该方法的值大于或等于0 public static int digitsInARow(int n) { if (n / 10 == 0) { return 1; } int
public static int digitsInARow(int n) {
if (n / 10 == 0) {
return 1;
}
int count = 0;
int count1 = 0;
while (n > 0) {
int digit = n % 10;
int a = n / 10;
if (digit == a % 10) {
count++;
} else {
count1 = Math.max(count1, count);
count = 0;
}
n = n / 10;
}
return Math.max(count, count1);
}
我知道if的陈述是错误的。我试图找出一种方法来比较连续的数字,而不使用整数类或字符串类。有什么建议吗?您的代码的问题是
count
跟踪当前计数,而不是最高计数。您还需要添加一个跟踪最高计数的变量,并在每次处理数字时更新它,然后再将count
重置回零
退出循环时,不要忘记更新最高计数,以防当前的
count
大于先前找到的max
当前代码有什么问题?您需要跟踪最大计数。现在,只要计数重置为0,代码就会忘记它。@Tunaki输出不正确。它一直返回0,除非它是一个数字,我有一个单独的if语句。谢谢!我稍微编辑了我的代码,但输出仍然是错误的。@TheBolt这是因为count1+=count代码>零件。您应该指定count1
旧count1
和新count
的最大值。谢谢!我尝试了另一种方法,但仍然不正确:/