思路:
当我们要对这些超大数进行比较排序时,如果我们用int或long基本数据类型时,会超出能承载的范围,因此我们选择用引用数据类型:BigDecimal或BigInteger。
区别在于基本数据类型直接比较大小,而是调用这个类里的方法进行比较大小
代码:
法一:用BigDecimal
import java.math.BigDecimal;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
int n;
Scanner scanner=new Scanner(System.in);
n=scanner.nextInt();
BigDecimal max= BigDecimal.valueOf(0);//将最大票数和总票数设置为BigDecimal类型
BigDecimal sum;
int number=0;
for(int i=0;i<n;i++){
sum=scanner.nextBigDecimal();
max= max.max(sum);//用BigDecimal类里的方法max
if(max==sum){
number=i+1;
}
}
System.out.println(number);
System.out.print(max);
}
}
法二:用BigInteger4
import java.math.BigInteger;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
int n=scanner.nextInt();
BigInteger max= BigInteger.valueOf(0);
BigInteger sum;
int number = 0;
for(int i=0;i<n;i++){
sum=scanner.nextBigInteger();
if(max.compareTo(sum)==-1){//直接用compareTo方法比较,如果为-1则说明sum更大
max=sum;
number=i+1;
}
}
System.out.println(number);
System.out.print(max);
}
}
知识总结:
BigInteger:
- java中可以使用BigInteger操作大整数,也可以转换进制。如果在操作的时候一个整型数据已经超过了整数的最大类型长度long的话,则此数据就无法装入,所以,此时要使用BigInteger类进行操作。这些大数都会以字符串的形式传入。
法三:把数字当成字符串类型,用字符串里的compareTo方法比较大小
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
int n;
Scanner scanner=new Scanner(System.in);
n= scanner.nextInt();
String max="";
int number=0;
for(int i=0;i<n;i++){
String str=scanner.next();
if(str.length()>max.length()||str.length()==max.length()&&str.compareTo(max)>0){
max=str;
number=i+1;
}
}
System.out.println(number);
System.out.print(max);
}
}