如何在Java中查找Int、float和String数组中的最大值和最小值
有没有办法找出由整数、浮点数和字符串或字符组成的数组的最大值和最小值?在爪哇 例如: A={1,2,3,4,4.5,4.4,NA,NA,NA} 所以忽略所有的字符和字符串 预期成果: 这里的最大元素是4.5如何在Java中查找Int、float和String数组中的最大值和最小值,java,Java,有没有办法找出由整数、浮点数和字符串或字符组成的数组的最大值和最小值?在爪哇 例如: A={1,2,3,4,4.5,4.4,NA,NA,NA} 所以忽略所有的字符和字符串 预期成果: 这里的最大元素是4.5 最小值为1,这将有望完成任务。我只考虑了int、double和string ArrayList<Object> list = new ArrayList<Object>(Arrays.asList(1, 2, 3, 4, 4.5, 4.4, "NA", "NA
最小值为1,这将有望完成任务。我只考虑了int、double和string
ArrayList<Object> list = new ArrayList<Object>(Arrays.asList(1, 2, 3, 4, 4.5, 4.4, "NA", "NA", "NA"));
double num , max = Float.MIN_VALUE;
for (Object item : list)
{
if (item instanceof Integer)
{
num =(int)item + 0.0;
}
else
{
if(item instanceof String)
{
// don't do anything - skip
continue ;
}
else
{
// is a double
num = (double)(item) ;
}
}
if(num >= max)
{
max = num ;
}
}
System.out.println(max);
这就是我使用Java8的方式+
Object[] array = new Object[] { 1, "2", 2.5f, 3, "test" };
double result = Stream.of(array)
.filter(x -> x instanceof Number)
.mapToDouble(x -> ((Number) x).doubleValue())
.max().orElse(Double.MIN_VALUE);
->result=3您可以从数组中提取float和int,忽略字符串值,然后查找最大值和最小值
import java.util.Arrays;
public class stackMax
{
public static void main (String[] args)
{
String[] A={"1","2","3","4","4.5","4.4","NA","NA","NA"};
System.out.println(findMax(A));
}
public static String findMax(String[] A)
{
int max=0,min=0; //stores minimum and maximum values
int f=0; //counter to store values in "float" arrays
//store length for FloatArray so we dont get extra zereos at the end
int floatLength =0;
for(int i=0;i<A.length;i++){
try{
Float.parseFloat(A[i]);
floatLength++;
}
catch(NumberFormatException e) {}
}
//arrays to store int and float values from main Array "A"
float[] floatArray = new float[floatLength];
for(int i=0;i<floatLength;i++){
try{ //checking valid float using parseInt() method
floatArray[f] = Float.parseFloat(A[i]);
f++;
}
catch (NumberFormatException e) {}
}
Arrays.sort(floatArray);
return String.format("\nMaximum value is %.1f\nMinimum value is %.1f",floatArray[floatArray.length-1],floatArray[0]);
}
}
NA与1相比如何?不,如果你仔细观察,数组中的“1”只是做一个常规循环,只跟踪数字。一个重要的问题是,你是如何得到这样一个数组的。这表明设计不好。Java是一种类型检查语言是有原因的。在同一个数据结构中混合数据,然后尝试将它们分解,这不是一个好的设计。因此,当您从db中获取它们时,如果它们不是数字,请不要将它们放入数组中。我仍然怀疑这是一个糟糕的设计,因为DB中该列的语义似乎过于松散。请注意,从浮点(如果有的话)转换为双精度意味着失去精度。