Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用scanner Java查找序列中没有固定输入的连续数字_Java - Fatal编程技术网

使用scanner Java查找序列中没有固定输入的连续数字

使用scanner Java查找序列中没有固定输入的连续数字,java,Java,我是这个网站的新手,我写Java,但我正在尝试一个问题,用户可以输入任意数量的数字(不以空格或逗号分隔),输出的数字将是连续出现最多的数字,以及在该链中出现了多少次 我在弄清楚如何比较将要出现的不同数字链时遇到了麻烦。例如,如果一行中有3个0后跟5个7,我需要将它们相互比较 我提出了两个变量,一个是连续计算最多的变量,另一个是第二位。然后,如果第二位超过一行中的最大值,则第二位变为第一位,然后该值重置为零。我不能让它工作,我相信这是因为我使用了for循环 问题:我正在寻找一些关于如何正确解决这个

我是这个网站的新手,我写Java,但我正在尝试一个问题,用户可以输入任意数量的数字(不以空格或逗号分隔),输出的数字将是连续出现最多的数字,以及在该链中出现了多少次

我在弄清楚如何比较将要出现的不同数字链时遇到了麻烦。例如,如果一行中有3个0后跟5个7,我需要将它们相互比较

我提出了两个变量,一个是连续计算最多的变量,另一个是第二位。然后,如果第二位超过一行中的最大值,则第二位变为第一位,然后该值重置为零。我不能让它工作,我相信这是因为我使用了for循环

问题:我正在寻找一些关于如何正确解决这个问题的指导。我这样做完全错了吗?

这是我的代码唯一有效的版本。如果我输入一个像10000这样的数字,它将得到正确的0,但是像100011这样的数字将得到错误的0

谢谢

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;
    }