我对这个网站和编写Java非常陌生,但我正在尝试解决一个问题,用户可以输入任意数量的数字(不以空格或逗号分隔),输出将是最连续出现的数字以及在该链中出现的次数。
我在弄清楚如何比较将出现的不同数字链时遇到了麻烦。例如,如果连续有 3 个零,后跟 5 个七,我需要将它们相互比较。
我想出了两个变量,一个将连续计数最多,另一个将排名第二。然后,如果第二名连续超过最多,则第二名将成为第一名,然后该值将重置为零。我无法让它工作,我相信这是因为我使用了 for 循环。
问题:我正在寻找一些有关如何正确解决此问题的指导。难道我的做法全错了?
这是我的代码唯一有效的版本。如果我输入一个像 10000 这样的数字,它会得到正确的 0,但是像 100011 这样的数字,它会得到不正确的结果。
谢谢。
import java.util.Scanner;
public class Sequence
{
public static void main(String[] args)
{
String numInput;
int mostInaRow = 1;
int secondPlace = 1;
char mostNum = 1;
Scanner input = new Scanner(System.in);
System.out.println("Enter the numbers");
numInput = input.next();
for (int i = 0 ;i < numInput.length() - 1 ; i++ )
{
if(numInput.charAt(i) == numInput.charAt(i + 1))
{
mostInaRow++;
secondPlace++;
mostNum = numInput.charAt(i);
}
else
{
}
}
System.out.println(mostNum);
System.out.println(mostInaRow);
}
}
最佳答案
int i = 0;
while(i < numInput.length() - 1) {
int j = i + 1;
int current = 1;
while (j < numInput.length() && numInput.charAt(i) == numInput.charAt(j)) {
current++;
j++;
}
if (current > mostInaRow) {
mostInaRow = current;
mostNum = numInput.charAt(i);
}
i = j;
}
你可以做这样的事情
关于java - 使用扫描仪 Java 在没有固定输入的情况下查找序列中的连续数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39619604/