Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从数组中删除两个最大的元素_Java_Arrays - Fatal编程技术网

Java 从数组中删除两个最大的元素

Java 从数组中删除两个最大的元素,java,arrays,Java,Arrays,我可以填充我的数组,找到两个最大的数字。但是,我不能删除它。你们能帮我吗 int n = sc.nextInt(); int [] myArray = new int[n]; int first = 0; int second = 0; for(int i = 0; i < myArray.length; i++) { int num = sc.nextInt();` if (num > first) { seco

我可以填充我的数组,找到两个最大的数字。但是,我不能删除它。你们能帮我吗

  int n = sc.nextInt();
  int [] myArray = new int[n];
  int first = 0;
  int second = 0;
       for(int i = 0; i < myArray.length; i++) {
    int num = sc.nextInt();`
       if (num > first) {
         second = first;
         first = num;
    } else if(num > second) 
      {
      second = num;
      }
     }

   System.out.println("The largest  " + first+ "The second largest  " + second);
int n=sc.nextInt();
int[]myArray=新的int[n];
int first=0;
int秒=0;
for(int i=0;i第一个){
第二=第一;
第一个=num;
}else if(num>秒)
{
第二个=num;
}
}
System.out.println(“最大的”+first+“第二大的”+second);

您可以创建一个新数组(在本例中为
filteredArray
),将所有元素存储在
myArray
中,但最大的两个元素除外。 此外,最好保存两个最大数字的索引,而不是它们的值,以便能够更容易地过滤掉它们

这应该可以工作(您将在
filteredArray
中找到所需的数组)

int n=sc.nextInt();
int[]myArray=新的int[n];
int first=0;
int秒=0;
for(int i=0;imyArray[first]){
第二=第一;
第一个=i;
}else if(myArray[i]>myArray[second]){
第二个=i;
}
}
int[]filteredArray=新int[n-2];
int=0;
for(int i=0;i
您可以创建一个新数组(在本例中为
filteredArray
),将所有元素存储在
myArray
中,但最大的两个元素除外。 此外,最好保存两个最大数字的索引,而不是它们的值,以便能够更容易地过滤掉它们

这应该可以工作(您将在
filteredArray
中找到所需的数组)

int n=sc.nextInt();
int[]myArray=新的int[n];
int first=0;
int秒=0;
for(int i=0;imyArray[first]){
第二=第一;
第一个=i;
}else if(myArray[i]>myArray[second]){
第二个=i;
}
}
int[]filteredArray=新int[n-2];
int=0;
for(int i=0;i
以下代码可能对您有用

again :
for (int i = 0; i < n; i++) 
{            
     if ((a[i] < a[i+1]) && (i+1)<n)  
     {
         temp = a[i];
         a[i] = a[i+1];
         a[i+1] = temp;
         continue again;
     }           
}
System.out.println("The largest  " + a[0] + " & second largest " + a[i]);
再次:
对于(int i=0;i如果((a[i]
again :
for (int i = 0; i < n; i++) 
{            
     if ((a[i] < a[i+1]) && (i+1)<n)  
     {
         temp = a[i];
         a[i] = a[i+1];
         a[i+1] = temp;
         continue again;
     }           
}
System.out.println("The largest  " + a[0] + " & second largest " + a[i]);
再次:
对于(int i=0;i如果((a[i]
//Your array
Integer[] array = {8, 99, 6, 336, 2};

//sort your array this can give your [2, 6, 8, 99, 336]
Arrays.sort(array);

//create a new array with the length = array - 2 if the length of array < 2 then 0
Integer[] array2 = new Integer[array.length > 2 ? array.length - 2 : 0];

//copy your array into the array2 avoiding the 2 last
System.arraycopy(array, 0, array2, 0, array.length > 2 ? array.length - 2 : 0);

//print your array, this will print [2, 6, 8]
System.out.println(Arrays.toString(array2));
//您的数组
整数[]数组={8,99,6336,2};
//对数组进行排序,这样可以得到[2,6,8,99336]
数组。排序(数组);
//创建一个长度为数组-2的新数组,如果数组长度小于2,则为0
整数[]array2=新整数[array.length>2?array.length-2:0];
//将阵列复制到阵列2中,避免最后2个阵列
System.arraycopy(array,0,array2,0,array.length>2?array.length-2:0);
//打印您的数组,这将打印[2,6,8]
System.out.println(Arrays.toString(array2));

如果您使用的是Java 8,则可以对数组进行排序,然后可以循环抛出数组并将其值设置为另一个值,避免最后两个整数,例如:

//Your array
Integer[] array = {8, 99, 6, 336, 2};

//sort your array this can give your [2, 6, 8, 99, 336]
Arrays.sort(array);

//create a new array with the length = array - 2 if the length of array < 2 then 0
Integer[] array2 = new Integer[array.length > 2 ? array.length - 2 : 0];

//copy your array into the array2 avoiding the 2 last
System.arraycopy(array, 0, array2, 0, array.length > 2 ? array.length - 2 : 0);

//print your array, this will print [2, 6, 8]
System.out.println(Arrays.toString(array2));
//您的数组
整数[]数组={8,99,6336,2};
//对数组进行排序,这样可以得到[2,6,8,99336]
数组。排序(数组);
//创建一个长度为数组-2的新数组,如果数组长度小于2,则为0
整数[]array2=新整数[array.length>2?array.length-2:0];
//将阵列复制到阵列2中,避免最后2个阵列
System.arraycopy(array,0,array2,0,array.length>2?array.length-2:0);
//打印您的数组,这将打印[2,6,8]
System.out.println(Arrays.toString(array2));
对数组进行排序(默认排序为升序,即从最小到最大),然后制作一个不包含最后两个元素的新数组副本

if(myArray.length > 2) {
    Arrays.sort(myArray);
    myArray = Arrays.copyOf(myArray, myArray.length-2);
} else {
    throw new IllegalArgumentException("Need moar elements in array!");
}
然后对生成的数组执行任何计算。如果要保留原始数组,请在执行
copyOf()

对数组进行排序时不要覆盖
myArray
(默认排序为升序,即从最小到最大),然后制作不包含最后两个元素的新数组副本

if(myArray.length > 2) {
    Arrays.sort(myArray);
    myArray = Arrays.copyOf(myArray, myArray.length-2);
} else {
    throw new IllegalArgumentException("Need moar elements in array!");
}

然后对生成的数组执行任何计算。如果要保留原始数组,在执行
copyOf()

操作时不要覆盖
myArray
,只需对数组排序并查找或删除最大的两个元素即可

int [] myArray = new int[]{14,5,2,16,18,20};
System.out.println("The original array is "+ " " +Arrays.toString(myArray));
Arrays.sort(myArray);
System.out.println("The sorted array is "+ " " +Arrays.toString(myArray));;

int fisrtmax = myArray[myArray.length-1];
int secondmax = myArray[myArray.length-2];

System.out.println("The first biggest number is " + fisrtmax+ "  The second biggest number is " + secondmax);

int [] arrafterremove= Arrays.copyOf(myArray, myArray.length-2);


System.out.println("The array after removing the two biggest numbers is " + Arrays.toString(arrafterremove));
跑步

The original array is  [14, 5, 2, 16, 18, 20]
The sorted array is  [2, 5, 14, 16, 18, 20]
The first biggest number is 20  The second biggest number is 18
Array after removing the two biggest numbers is [2, 5, 14, 16]

您可以简单地对数组进行排序,并查找或删除两个最大的元素

int [] myArray = new int[]{14,5,2,16,18,20};
System.out.println("The original array is "+ " " +Arrays.toString(myArray));
Arrays.sort(myArray);
System.out.println("The sorted array is "+ " " +Arrays.toString(myArray));;

int fisrtmax = myArray[myArray.length-1];
int secondmax = myArray[myArray.length-2];

System.out.println("The first biggest number is " + fisrtmax+ "  The second biggest number is " + secondmax);

int [] arrafterremove= Arrays.copyOf(myArray, myArray.length-2);


System.out.println("The array after removing the two biggest numbers is " + Arrays.toString(arrafterremove));
跑步

The original array is  [14, 5, 2, 16, 18, 20]
The sorted array is  [2, 5, 14, 16, 18, 20]
The first biggest number is 20  The second biggest number is 18
Array after removing the two biggest numbers is [2, 5, 14, 16]

为什么您不能删除它?我假设您希望数组缩小两个元素?这在数组中是不可能的。您可以将这些元素设置为null。如果您想删除这些元素,请使用另一个数据结构list
list
,我的任务是:向控制台写出整数列表的平均值,但忽略两个la最大值。如果这是您的任务,则不必从数组中删除任何内容。在循环数组以获取总和时,跟踪2个最大值。最后减去总和中两个最大值的总和,然后除以长度-2,就得到了该值。为什么您不能删除它?我假设您希望数组是耸肩的nk由两个元素组成?这在数组中是不可能的。您可以将这些元素设置为null。如果要删除这些元素,请使用另一个数据结构list
list
,这是我的任务:将整数列表的平均值写入控制台,但忽略两个最大值。如果这是您的任务,则不必从中删除任何内容你的阵型。而