我是java的新手。我試圖在陣列中找到最小最大元素,然后洗掉最小值和最大值。這是我寫的代碼,它只適用于最大值而不是最小值。
public class delminmax {
public static void main(String[] args) {
int [] nums = {10,50,20,90,22};
int max = 0;
int min = 0;
for (int i=0; i<nums.length; i ) {
if (nums[i]> max)
max = nums[i];
}
System.out.println("The max number is " max);
for (int i=0;i<nums.length;i )
if (max==nums[i]) {
for (int j=i; j<nums.length-1;j )
nums[j]= nums[j 1];
}
for (int i=0;i<nums.length-1;i )
System.out.print(nums[i] " " "\n");
for (int i=0; i<nums.length; i ) {
if (nums[i]< min)
min = nums[i];
}
System.out.println("The min number is " min);
for (int i=0;i<nums.length;i )
if (min==nums[i]) {
for (int j=i; j<nums.length-1;j )
nums[j]= nums[j 1];
}
for (int i=0;i<nums.length-1;i )
System.out.println(nums[i] " ");
}
}
uj5u.com熱心網友回復:
您不能從陣列中洗掉元素,陣列具有在創建時確定的固定長度。您可以改為創建一個包含兩個更少元素的新陣列。您只需要一個回圈來確定minand ,但我認為跟蹤and元素max的索引而不是直接這樣做更干凈。然后,您可以在復制到新陣列時使用第二個回圈跳過這些元素。喜歡,minmaxnums
int[] nums = { 10, 50, 20, 90, 22 };
int mini = 0, maxi = 0;
for (int i = 1; i < nums.length; i ) {
if (nums[i] < nums[mini]) {
mini = i;
}
if (nums[i] > nums[maxi]) {
maxi = i;
}
}
System.out.printf("The min = %d, the max = %d%n", nums[mini], nums[maxi]);
int[] newNums = new int[nums.length - 2]; // A new array, with two fewer elements
int p = 0;
for (int i = 0; i < nums.length; i ) {
if (i != mini && i != maxi) {
newNums[p ] = nums[i];
}
}
System.out.println(Arrays.toString(newNums));
哪個輸出
The min = 10, the max = 90
[50, 20, 22]
uj5u.com熱心網友回復:
使用 Java 8
您可以嘗試使用streams以下方法:
方法在這里:
我已經轉換了串列中給定的 Integers 陣列,sorted然后使用以下任何方法從該串列中找到最小和最大整數,然后nums用這些min和max整數過濾 Array 并將過濾后的串列轉換回Array of Integers。
查找陣列中的最小和最大整數
1)通過使用流中的 IntSummaryStatistics
IntSummaryStatistics statistics = Arrays.stream(nums).summaryStatistics();
int minNum = statistics.getMin();
int maxNum = statistics.getMax();
2)通過對陣列進行排序
List<Integer> mainList = Arrays.stream(nums).boxed().sorted()
.collect(Collectors.toList());
int minNum = mainList.get(0);
int maxNum = mainList.get(mainList.size()-1);
注意: 它將從給定陣列中洗掉所有出現的最小和最大整數。
public class Test {
public static void main(String[] args) {
int [] nums = {10,50,90,20,5,90,22,5};
IntSummaryStatistics statistics = Arrays.stream(nums).summaryStatistics();
int minNum = statistics.getMin();
int maxNum = statistics.getMax();
int[] num = Arrays.stream(nums)
.filter(x -> x != minNum && x != maxNum).toArray();
for(int i:num){
System.out.print(i " ");
}
}
}
測驗用例:
Input: {10,50,90,20,5,90,22,5}
Output: 10 50 20 22
Input: {10, 50, 20, 90, 22}
Output: 50 20 22
uj5u.com熱心網友回復:
陣列是不能改變長度/大小的東西。它們是用無法修改的固定大小創建的。如果你想使用你提到的功能,最好去一個串列,最好是 ArrayList
List<Integer> list= new ArrayList<Integer>();
如果需要,您始終可以將 ArrayList 作為陣列回傳。您可以搜索功能,例如
list.toArray()
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/522676.html
標籤:爪哇数组排序哎呀
上一篇:在C中排序和列印目錄和子目錄
