代码之家  ›  专栏  ›  技术社区  ›  Arjun

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

  •  0
  • Arjun  · 技术社区  · 7 年前

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

    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 回复  |  直到 7 年前
        1
  •  3
  •   Thilo    7 年前

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

    你把你的绳子当作 char[] arr ,每一个 char 里面有(一旦你把它放进 int )字符的Unicode码位。

    您可以调整打印方式:

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

    或者避免把它放进 int 首先键入变量(如果将 烧焦 它将按预期打印)。


    还要注意,您的方法有点脆弱,当输入字符串包含非数字字符(如字母)时,它会做一些意想不到的事情。