In fact, I want to use "normOfVector()" method with Integer, and Float, but I couldn't
I get this error:
The method normOfVector(ArrayList) in the type TestMethod is not applicable for the arguments (ArrayList)
package code;
import java.util.ArrayList;
import java.util.List;
public class TestMethod
{
public static float normOfVector(ArrayList<Integer> list)
{
float sum = 0.0f;
for (Integer i : list)
sum = sum + (float) (i * i);
// end for
return (float) Math.sqrt(sum);
}// end function
public static void main(String[] args)
{
// In this case no Problem
ArrayList<Integer> listI = new ArrayList<>();
listI.add(0);
listI.add(3);
listI.add(5);
listI.add(7);
listI.add(2);
float result = normOfVector(listI);
// In this case will not work
ArrayList<Float> listF = new ArrayList<>();
listF.add(0.0f);
listF.add(3.0f);
listF.add(5.0f);
listF.add(7.0f);
listF.add(2.0f);
result = normOfVector(listF);
}// end main
}// end class
My point is:
I want to create a method that accept the two cases.
Thank you.
In your first block your are computing numbers but storing them as objects. You should be storing them as Integer
or Float
, or maybe Double
or Number
, but not Object
. Second in your cos(...)
method you should limit what kind of parameters are accepted by changing the declaration to List<Integer>
, List<Float>
or List<? extends Number>
. It may help to study up on java generics and especially using the PECS principle.
Collected from the Internet
Please contact [email protected] to delete if infringement.
Comments