为了账号安全,请及时绑定邮箱和手机立即绑定

如何找到大整数数组列表的最小和最大元素?

如何找到大整数数组列表的最小和最大元素?

慕斯王 2022-09-28 15:41:13
如何找到 的 最小和最大元素。ArrayListBigIntegers我尝试过的是:import java.math.BigInteger; import java.io.*;import java.util.*;public class HelloWorld{     public static void main(String []args){         BigInteger i1 = new BigInteger("4343345345345");         BigInteger i2 = new BigInteger("4343453345345345");         BigInteger i3 = new BigInteger("4343453345");        List<BigInteger> list = new ArrayList<>();        list.add(i1);        list.add(i2);        list.add(i3);       BigInteger max = list.stream().max(Comparator.comparing(BigInteger::intValue())).orElseThrow(NoSuchElementExcep::new);                BigInteger min = list.stream().min(Comparator.comparing(BigInteger::intValue())).orElseThrow(NoSuchElementExcep::new);      System.out.println(max.intValue());      System.out.println(min.intValue());     }}但这给了我以下错误:HelloWorld.java:20: error: ')' expected        BigInteger min = list.stream().min(Comparator.comparing(BigInteger::intValue())).orElseThrow(NoSuchElementExcep::new);                                                                                    ^HelloWorld.java:20: error: ';' expected        BigInteger min = list.stream().min(Comparator.comparing(BigInteger::intValue())).orElseThrow(NoSuchElementExcep::new);                                                                                     ^HelloWorld.java:20: error: illegal start of expression        BigInteger min = list.stream().min(Comparator.comparing(BigInteger::intValue())).orElseThrow(NoSuchElementExcep::new);                                                                                      ^HelloWorld.java:20: error: ';' expected        BigInteger min = list.stream().min(Comparator.comparing(BigInteger::intValue())).orElseThrow(NoSuchElementExcep::new);                                                                                       ^还有其他想法吗?
查看完整描述

3 回答

?
温温酱

TA贡献1752条经验 获得超4个赞

获取最小值和最大值确实可以在不比较 s 的情况下工作。您应该使用自然排序:intValue

BigInteger max = list.stream().max(BigInteger::compareTo).orElseThrow(NoSuchElementExcep::new);        
BigInteger min = list.stream().min(BigInteger::compareTo).orElseThrow(NoSuchElementExcep::new);

同样没有的是,您正在打印值:

System.out.println(max.intValue());
System.out.println(min.intValue());

您正在调用方法,但该号码超出了 (32b) 的容量。您应该使用:intValueint

System.out.println(max);
System.out.println(min);


查看完整回答
反对 回复 2022-09-28
?
侃侃无极

TA贡献2051条经验 获得超10个赞

只需做


BigInteger max = list.stream().max(BigInteger::compareTo).get();

BigInteger min = list.stream().min(BigInteger::compareTo).get();


查看完整回答
反对 回复 2022-09-28
?
森林海

TA贡献2011条经验 获得超2个赞

答案是:


import java.io.*;

import java.util.*;



public class HelloWorld{


     public static void main(String []args){

         BigInteger i1 = new BigInteger("4343345345345");

         BigInteger i2 = new BigInteger("4343453345345345");

         BigInteger i3 = new BigInteger("22");


        List<BigInteger> list = new ArrayList<>();


        list.add(i1);

        list.add(i2);

        list.add(i3);



        System.out.println(Collections.min(list, Comparator.naturalOrder()));


     }

}


查看完整回答
反对 回复 2022-09-28
  • 3 回答
  • 0 关注
  • 105 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信