思路:
当我们要对这些超大数进行比较排序时,如果我们用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类里的方法maxif(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);}
}