错误是在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
,它将按预期打印)
还请注意,您的方法有点脆弱,当输入字符串包含非数字字符(如字母)时,它将执行意外操作