java - 使用扫描仪 Java 在没有固定输入的情况下查找序列中的连续数字

标签 java

我对这个网站和编写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/

相关文章:

java - 如何在 swagger ui 中为 v3/api-docs 设置编码 utf-8?

java - MQ CCDT AMQ9516 FileNotFoundException

java - 将代码放入main方法中

java - 加载 Java 消息属性以进行内部化

java - 双注入(inject)

java - 如何在不同的编程语言中使用相同的正则表达式?

javascript - 字符串的正则表达式模式包含 "at least one digit and allows only two special chars"

java - Android 测验应用程序与 SQLite 数据库随机选择

java - if else 语句

java - jdk和eclipse的问题