關於任意數字型別的陣列求最大值解決辦法

2022-09-22 21:51:29 字數 3648 閱讀 5462

有兩種思路:

一種是過載方式(就是有幾種數字陣列就寫幾個過載方法,因為arrays中的tostring()方法就是這麼幹的(黃玉昆給的解釋,很好),畢竟基本資料型別沒封裝類好操作)。

[j**a] 

public class getmaxandmin ; 

string max_min = getmax_min(arr); 

system.out.println(max_min);    //列印結果:陣列中,最大值為:98 , 最小值為 :1  

} public static string getmax_min(int arr) 

return "陣列中,最大值為:"+max+" , 最小值為 :"+min; 

} public static string getmax_min(double arr) 

return "陣列中,最大值為:"+max+" , 最小值為 :"+min; 

} public static string getmax_min(long arr) 

return "陣列中,最大值為:"+max+" , 最小值為 :"+min; 

}  } 

public class getmaxandmin ;

string max_min = getmax_min(arr);

system.out.println(max_min);    //列印結果:陣列中,最大值為:98 , 最小值為 :1

}public static string getmax_min(int arr)

return "陣列中,最大值為:"+max+" , 最小值為 :"+min;

}    public static string getmax_min(double arr)

return "陣列中,最大值為:"+max+" , 最小值為 :"+min;

}    public static string getmax_min(long arr)

return "陣列中,最大值為:"+max+" , 最小值為 :"+min;

}另一種是利用反射(開始我想的也是這種,可是沒有想到結合集合去解決在陣列型別未知時怎麼比較大小,問了下老師得到了滿意的答覆)

不能像這樣用泛型getmax(t),因為t不接收基本型別的陣列。

**如下:

//這是關鍵:因為不確定陣列的資料型別,比較大小,可以考慮是用集合工具了collections的max()方法

[j**a] 

/*             思路:

*           1、傳入乙個陣列引用獲取其位元組碼檔案

*           2、用class的靜態方法,isarray判斷是不是陣列

*           3、是陣列的話通過componenttype()方法獲取其陣列型別

*           4、對型別進行判斷,是基本資料型別就乙個個新增進list集合(自動裝箱)

*           5、不是的話就用object中的arraycopy(),直接新增進list集合。

*           6、因為jvm不知道陣列型別,所以不能用比較符號,用collections中的max,min方法獲取集合中的最大值最小值

* */   

class  getmaxandmin; 

double ds = ; 

float fs = ; 

integer in = ; 

double d = ; 

system.out.println(getmax_min(ins)); //陣列中最大值為:98, 最小值為:1  

system.out.println(getmax_min(ds));  // 陣列中最大值為:328.0, 最小值為:123.323  

system.out.println(getmax_min(fs));  //陣列中最大值為:123.5, 最小值為:32.4  

system.out.println(getmax_min(in));  //陣列中最大值為:17, 最小值為:1  

system.out.println(getmax_min(d));   // 陣列中最大值為:328.0, 最小值為:123.323  

} @suppresswarnings() 

public static string getmax_min(object arr) 

} else if (componenttype == integer.class 

|| componenttype == float.class 

|| componenttype == double.class 

||componenttype == long.class) else  

} else  

return "陣列中最大值為:"+collections.max(list)+", 最小值為:"+collections.min(list);   

} } /*

思路:*           1、傳入乙個陣列引用獲取其位元組碼檔案

*           2、用class的靜態方法,isarray判斷是不是陣列

*           3、是陣列的話通過componenttype()方法獲取其陣列型別

*           4、對型別進行判斷,是基本資料型別就乙個個新增進list集合(自動裝箱)

*           5、不是的話就用object中的arraycopy(),直接新增進list集合。

*           6、因為jvm不知道陣列型別,所以不能用比較符號,用collections中的max,min方法獲取集合中的最大值最小值

* */

class  getmaxandmin;

double ds = ;

float fs = ;

integer in = ;

double d = ;

system.out.println(getmax_min(ins)); //陣列中最大值為:98, 最小值為:1

system.out.println(getmax_min(ds));  // 陣列中最大值為:328.0, 最小值為:123.323

system.out.println(getmax_min(fs));  //陣列中最大值為:123.5, 最小值為:32.4

system.out.println(getmax_min(in));  //陣列中最大值為:17, 最小值為:1

system.out.println(getmax_min(d));   // 陣列中最大值為:328.0, 最小值為:123.323

}   

@suppresswarnings()

public static string getmax_min(object arr)

} else if (componenttype == integer.class

|| componenttype == float.class

|| componenttype == double.class

||componenttype == long.class) else

} else

return "陣列中最大值為:"+collections.max(list)+", 最小值為:"+collections.min(list);

}}

符號隔開數字求最大值

問題描述 題目很簡單,給出n個數字,不改變它們的相對位置,在中間加入k個乘號和n k 1個加號,括號隨便加 使最終結果盡量大。因為乘號和加號一共就是n 1個了,所以恰好每兩個相鄰數字之間都有乙個符號。例如 n 5,k 2,5個數字分別為1 2 3 4 5,可以加成 1 2 3 4 5 24 1 2 ...

求自定型別元素的最大值

4 5 求自定型別元素的最大值 10分 本題要求實現乙個函式,求n個集合元素s中的最大值,其中集合元素的型別為自定義的elementtype。elementtype max elementtype s,int n 其中給定集合元素存放在陣列s中,正整數n是陣列元素個數。該函式須返回n個s元素中的最大...

求自定型別元素的最大值

本題要求實現乙個函式,求n個集合元素s中的最大值,其中集合元素的型別為自定義的elementtype。elementtype max elementtype s,int n 其中給定集合元素存放在陣列s中,正整數n是陣列元素個數。該函式須返回n個s元素中的最大值,其值也必須是elementtype型...