0

This is a problem from a course I am taking in Java. In the book it should how to get the largest Number. I re-did it so that I could find the smallest number, and I would like to find out how to get the Summation within a function. I got a number but it is not a SUM OF THE ArrayList list = new ArrayList(); Please help if you can, Thanks!!

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 is\t" + 
  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 is\t" + 
      getSumNumber(list3));

        System.out.println("Test\t" + 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;
  }
  }
Reed
  • 5
  • 6
  • double total = 0.0; for (Number element : list3) total += element.doubleValue(); //return total; return total; – Reed Nov 22 '19 at 04:25
  • It appears that you abandoned `total += element.doubleValue()` in favor of `total += Number[element]`? Why? – Kevin Anderson Nov 22 '19 at 04:29

2 Answers2

0

Number is not allowing to do that...

you can instead do something like

BigDecimal total = new BigDecimal(0);
for (Number element : list3) //total += element.doubleValue();
{
    total.add((BigDecimal)element);
}
ΦXocę 웃 Пepeúpa ツ
  • 47,427
  • 17
  • 69
  • 97
  • total += element.doubleValue(); That works but I tried the other way using BigDecimal total = new BigDecimal(0); and it does not work? – Reed Nov 22 '19 at 20:44
-1

Operator is undefined for the argument type(s) java.lang.Number.

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

refs:How to add two java.lang.Numbers? answered by:Fritz Mock

kyimay
  • 1
  • 3
  • what is happening when you unbox a BigDecimal like this "2.0909090989091343433344343" into a double ?? – ΦXocę 웃 Пepeúpa ツ Nov 22 '19 at 12:31
  • @ΦXocę웃Пepeúpaツ Thank you for your question. You'r right " total = total.doubleValue() + element.doubleValue();" it is incorrect for BigInteger and BigDecimal values.I have edited my answer. Can you check and let me know if there is any problem. – kyimay Nov 22 '19 at 18:58