错误是从Java中给定的字符串中找到第二大数字

时间:2018-12-18 05:54:10

标签: java string

我正在尝试从给定的字符串中找到第二大的数字,但这并没有给我想要的确切结果。

import java.util.Scanner;
public class SecondLargest {
    public static void secondlarge(char[] arr,int arr_size) {
        int i,first,second;
        first = second = Integer.MIN_VALUE;
        for(i = 0 ; i < arr_size ; i++) {
            if (arr[i] > first) {
                second =first;
                first= arr[i];
            }
            else if (arr[i] > second && arr[i] != first)
                second = arr[i];
        }
        if (second == Integer.MIN_VALUE)    
            System.out.println("There is no second largest element\n"); 
        else
            System.out.println("The second largest element is "+second); 
    }
    public static void main(String[] args)  { 

        Scanner scan = new Scanner(System.in);
        System.out.print("Enter the String ");
        String userString = scan.nextLine();
        char[] stringToCharArray = userString.toCharArray();

        int n = stringToCharArray.length;
        secondlarge(stringToCharArray, n);
    }           
}

输出看起来像这样

  

输入字符串52236,第二大元素是53

最大的数字应该只有5位,在输出中显示53。

1 个答案:

答案 0 :(得分:3)

答案是正确的(在某种程度上):53是'5'的ASCII码。

您以char[] arr的形式遍历String,并且其中的每个char(一旦将其放入int中)都是字符的Unicode代码点。

您可以调整其打印方式:

 System.out.println("The second largest element is "+ (char) second); 

或首先避免将其放入int类型的变量中(如果保持为char,它将按预期打印)。


还请注意,您的方法有些脆弱,当输入的String包含字母等非数字字符时,它将做意外的事情。