从字符串中获取第二大数字的函数

3 java math numbers digits

我必须编写一个接受字符串并以整数形式返回用户输入中第二高的数字的函数。这些是我必须遵循的规则:

  • 没有数字输入应返回-1
  • 只有一位数字的输入应返回-1
  • 非数字字符应被忽略
  • 每个数字输入都应单独对待,这意味着如果出现联合最高位,则第二高位也将是最高位

我的代码:

public static int secondDigit(String input) {

    try {
        int userInput = Integer.parseInt(input);

        char[] array = input.toCharArray();

        int biggest = Integer.MIN_VALUE;
        int secondBiggest = Integer.MIN_VALUE;

        for(int i =0; i < array.length; i++) 
        {
            System.out.println("Array: "+array[i]);

            for(int j = 0; j < array[i]; j++)
            {
                if(array[i] > biggest) 
                {
                    secondBiggest = biggest;
                    biggest = array[i];
                }
                else if(array[i] > secondBiggest && array[i] != biggest)
                {
                    secondBiggest = array[i];
                }
            }

        }

        System.out.println(secondBiggest);

        return userInput;
    }catch(Exception e) {
        System.out.println("-1");

    }
    return -1;
    // Your code goes here
}
Run Code Online (Sandbox Code Playgroud)

“ abc:1231234”应该返回3
“ 123123”应该返回3

当前这是代码,当我给它输入“ 123123”时它返回51。

luk*_*302 6

您的代码几乎是正确的,唯一的问题是您要打印的是该位置处的char,char是'3'且具有ascii51。要解决此问题,您需要从char中解析一个int