使用scanner Java查找序列中没有固定输入的连续数字
我是这个网站的新手,我写Java,但我正在尝试一个问题,用户可以输入任意数量的数字(不以空格或逗号分隔),输出的数字将是连续出现最多的数字,以及在该链中出现了多少次 我在弄清楚如何比较将要出现的不同数字链时遇到了麻烦。例如,如果一行中有3个0后跟5个7,我需要将它们相互比较 我提出了两个变量,一个是连续计算最多的变量,另一个是第二位。然后,如果第二位超过一行中的最大值,则第二位变为第一位,然后该值重置为零。我不能让它工作,我相信这是因为我使用了for循环 问题:我正在寻找一些关于如何正确解决这个问题的指导。我这样做完全错了吗? 这是我的代码唯一有效的版本。如果我输入一个像10000这样的数字,它将得到正确的0,但是像100011这样的数字将得到错误的0 谢谢使用scanner Java查找序列中没有固定输入的连续数字,java,Java,我是这个网站的新手,我写Java,但我正在尝试一个问题,用户可以输入任意数量的数字(不以空格或逗号分隔),输出的数字将是连续出现最多的数字,以及在该链中出现了多少次 我在弄清楚如何比较将要出现的不同数字链时遇到了麻烦。例如,如果一行中有3个0后跟5个7,我需要将它们相互比较 我提出了两个变量,一个是连续计算最多的变量,另一个是第二位。然后,如果第二位超过一行中的最大值,则第二位变为第一位,然后该值重置为零。我不能让它工作,我相信这是因为我使用了for循环 问题:我正在寻找一些关于如何正确解决这个
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);
}
}
import java.util.Scanner;
公共类序列
{
公共静态void main(字符串[]args)
{
字符串numInput;
int mostInaRow=1;
int secondPlace=1;
char-mostNum=1;
扫描仪输入=新扫描仪(System.in);
System.out.println(“输入数字”);
numInput=input.next();
对于(int i=0;i
inti=0;
而(i当前行){
mostInaRow=电流;
mostNum=numInput.charAt(i);
}
i=j;
}
您可以这样做inti=0;
而(i当前行){
mostInaRow=电流;
mostNum=numInput.charAt(i);
}
i=j;
}
你可以这样做这是一个很好的迹象,表明你已经掌握了窍门,但要在一张纸上写下你所做的输入到底发生了什么。这样,您就可以理解代码在做什么&您需要做什么。再次检查IF-ELSE模块。当数字改变时,您只打印最后得到的结果,不重置任何内容。我建议您在调试器中逐步查看代码,以更好地了解它正在做什么。这是一个很好的迹象,表明您正在掌握它,但请在一张纸上写下您输入的具体情况。这样,您就可以理解代码在做什么&您需要做什么。再次检查IF-ELSE模块。当数字改变时,您只打印最后得到的结果,不重置任何内容。我建议您在调试器中逐步执行代码,以便更好地了解它在做什么。这很有效!你能解释一下这是怎么回事吗?我有点不明白你是怎么做到的。内部循环会发现有多少连续字符是相等的。当退出内部循环时,比较当前字符的连续序列是否为上一个max序列的>只需更新mostInaRow和mostNumThis即可!你能解释一下这是怎么回事吗?我有点不明白你是怎么做到的。内部循环会发现有多少连续字符是相等的。当退出内部循环时,比较当前连续的字符序列是否为上一个max序列的>只更新mostInaRow和mostNum
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;
}