抽象 数字类和总和 我可以找到最高和最低,但找不到数组列表的总和<>



这是我正在学习的Java课程中的一个问题。在书中应该如何获得最大的数字。我重新做了它,以便我可以找到最小的数字,我想找出如何在函数中获取求和。我得到了一个数字,但它不是数组列表 = 新数组列表((;如果可以的话,请帮忙,谢谢!!

package chapter_13;
import java.util.ArrayList;
import java.math.*;
import java.lang.Number;
public class LargestNumbers_2 
{
  public static void main(String[] args) {
ArrayList<Number> list = new ArrayList<Number>();
//list.add(0);
list.add(45); // Add an integer
list.add(3445.53); // Add a double
// Add a BigInteger
list.add(new BigInteger("3432323234344343101")); 
// Add a BigDecimal
list.add(new BigDecimal("2.0909090989091343433344343")); 
System.out.println("The largest number is " + 
  getLargestNumber(list));
ArrayList<Number> list2 = new ArrayList<>();
list2.add(3445.53); // Add a double
list2.add(45); // Add an integer
//list2.add(3445.53); // Add a double
// Add a BigInteger
list2.add(new BigInteger("3432323234344343101")); 
// Add a BigDecimal
list2.add(new BigDecimal("2.0909090989091343433344343"));
System.out.println("nThe smallest number ist" + 
  getSmallestNumber(list2));
ArrayList<Number> list3 = new ArrayList<>();
list3.add(3445.53); // Add a double
//list3.add(45); // Add an integer
list3.add(3445.53); // Add a double
// Add a BigInteger
list3.add(new BigInteger("3432323234344343101")); 
// Add a BigDecimal
list3.add(new BigDecimal("2.0909090989091343433344343")); 
   System.out.println("nThe number ist" + 
      getSumNumber(list3));
        System.out.println("Testt" + getSumNumber(list3));
      }
        public static Number getLargestNumber(ArrayList<Number> list)
         {
        if (list == null || list.size() == 0) 
       return null;
     Number number = list.get(0);
      for (int i = 1; i < list.size(); i++)
     {
        if (number.doubleValue() < list.get(i).doubleValue())
        number = list.get(i);}
    return number;
    }
   //public static Number getSumNumber(ArrayList<Number> list3)
 //public static Number getSumNumber(ArrayList<Number> list3)  
  public static Number getSumNumber(ArrayList<Number> list3)   
   {
   //if (list3 == null || list3.size() == 0) 
   //return null;
   //Number number3 = list3.get(0);
 //double  number2 = 0.0;   //10000000;
   Number total = 0;
 //double total = 0.0;
  /*
   for (int i = 1; i < list3.size(); i++)
   {
     double total1 = total;
  }
    */
    // calculate sum
     for (Number element : list3)
        //total += element.doubleValue();
        total += Number[element];
  //return total;
   return total;
  //return number3;
    }
    public static Number getSmallestNumber(ArrayList<Number> list2) 
    {
       if (list2 == null || list2.size() == 0) 
    return null;
    Number number2 = list2.get(3);   //4
    //Number number2 = 10000000;
     for (int i = 1; i > list2.size(); i++)
      {
        if (number2.doubleValue() > list2.get(i).doubleValue())
           number2 = list2.get(i);
    }
     return number2;
  }
  }

数字不允许这样做...

相反,您可以执行类似操作

BigDecimal total = new BigDecimal(0);
for (Number element : list3) //total += element.doubleValue();
{
    total.add((BigDecimal)element);
}

未为参数类型定义运算符 java.lang.Number。

BigDecimal total = new BigDecimal(0);
for (Number element : list3) {
    total = total.add(new BigDecimal(element.toString()));
}

refs:如何添加两个java.lang.Numbers? 回答者:Fritz Mock

最新更新