我正在尝试从给定的字符串中找到第二大的数字,但这并没有给我想要的确切结果。
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。
答案 0 :(得分:3)
答案是正确的(在某种程度上):53是'5'
的ASCII码。
您以char[] arr
的形式遍历String,并且其中的每个char
(一旦将其放入int
中)都是字符的Unicode代码点。
您可以调整其打印方式:
System.out.println("The second largest element is "+ (char) second);
或首先避免将其放入int
类型的变量中(如果保持为char
,它将按预期打印)。
还请注意,您的方法有些脆弱,当输入的String包含字母等非数字字符时,它将做意外的事情。