Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
错误是在java中从给定字符串中查找第二大数字_Java_String - Fatal编程技术网

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

错误是在java中从给定字符串中查找第二大数字,java,string,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

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

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);
    }           
}
import java.util.Scanner;
公共类第二大{
公共静态void secondlarge(字符[]arr,整数arr\u大小){
第一,第二;
第一个=第二个=Integer.MIN_值;
对于(i=0;i第一个){
第二=第一;
第一个=arr[i];
}
else if(arr[i]>second&&arr[i]!=first)
秒=arr[i];
}
if(秒==整数.MIN_值)
System.out.println(“没有第二大元素\n”);
其他的
System.out.println(“第二大元素为“+second”);
}
公共静态void main(字符串[]args){
扫描仪扫描=新扫描仪(System.in);
系统输出打印(“输入字符串”);
String userString=scan.nextLine();
char[]stringtocharray=userString.tocharray();
int n=StringToCharray.length;
第二大(stringToCharArray,n);
}           
}
输出结果如下所示

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

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

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

将字符串作为
char[]arr
进行遍历,其中的每个
char
都是字符的Unicode码点(一旦将其放入
int

您可以调整打印方式:

 System.out.println("The second largest element is "+ (char) second); 
或者首先避免将其放入
int
类型变量中(如果保留为
char
,它将按预期打印)


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

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

将字符串作为
char[]arr
进行遍历,其中的每个
char
都是字符的Unicode码点(一旦将其放入
int

您可以调整打印方式:

 System.out.println("The second largest element is "+ (char) second); 
或者首先避免将其放入
int
类型变量中(如果保留为
char
,它将按预期打印)


还请注意,您的方法有点脆弱,当输入字符串包含非数字字符(如字母)时,它将执行意外操作