如何在用户输入中找到最常用的数字?java

ecr0jaav  于 2021-06-30  发布在  Java
关注(0)|答案(2)|浏览(293)

关闭。这个问题需要细节或清晰。它目前不接受答案。
**想改进这个问题吗?**通过编辑这个帖子来添加细节并澄清问题。

上个月关门了。
改进这个问题
用户如何输入他们的号码,例如:“122113333443”,而我需要输出“3333”。
如果他们再次输入类似“1224”的内容,我就需要输出“22”。
如果我不知道他们要输入哪些数字以及代码的样子,这怎么可能呢?到目前为止,我只有一个开头,如果输入不是数字,它会显示输入输出错误。

int k;

    Scanner sc = new Scanner(System.in);
    System.out.println("input string:");
    if (sc.hasNextInt())
        k = sc.nextInt();
    else {
        System.out.println("input-output error");
        sc.close();
        return;
    }
f0brbegy

f0brbegy1#

可以使用变量( StringBuilder longest 在下面给出的代码中)跟踪具有相同字符的最长字符序列。
迭代字符串中的所有字符,并将这些字符附加到 StringBuilder ( StringBuilder sb 直到找到不同的字符。发生这种情况时,请重置 sb .
在每个附加到 sb ,检查其长度是否大于 longest . 如果是,则传输 StringBuilderlongest .

import java.util.Scanner;

class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.print("Input string: ");
        String input = sc.nextLine();
        System.out.println(getLongest(input));
    }

    static String getLongest(String str) {
        StringBuilder sb = new StringBuilder();
        StringBuilder longest = new StringBuilder();
        char current = 0;

        // Process all but the last character of str
        for (int i = 0; i < str.length() - 1; i++) {
            current = str.charAt(i);
            sb.append(current);
            if (sb.length() > longest.length()) {
                longest = new StringBuilder(sb);
            }
            if (current != str.charAt(i + 1)) {
                sb = new StringBuilder();
            }
        }

        // Process the last character of str
        sb.append(str.charAt(str.length() - 1));
        if (sb.length() > longest.length()) {
            longest = new StringBuilder(sb);
        }

        return longest.toString();
    }
}

示例运行:

Input string: 122113333443
3333

另一个示例运行:

Input string: 1224
22
weylhg0b

weylhg0b2#

这是java而不是javascript,错误的标记。不过,这是我的机会。我不太擅长java,但无论如何:

public String findMostCommon(int inp) {
        int[] occuranceTable = new int[9];
        for (int i = 0; i < occuranceTable.length; i++) {
            occuranceTable[i] = 0;
        }

        // Convert input int to Array of digits
        String temp = Integer.toString(inp);
        int[] digits = new int[temp.length()];
        for (int i = 0; i < temp.length(); i++) {
            digits[i] = temp.charAt(i) - '0';
        }

        // Get Occurances of each digit
        for(int digit : digits) {
            occuranceTable[digit]++;
        }

        // Find most frequent digit
        int max = -1;
        for (int i = 0; i < occuranceTable.length; i++) {
            max = occuranceTable[i] > max ? i : max;

        }

        // Make result string
        String result = "";
        for (int i = 0; i < occuranceTable[max]; i++)
            result += String.valueOf(max);

        return result;

}

相关问题