【问题标题】:How to change an integer array within a method如何在方法中更改整数数组
【发布时间】:2022-11-27 09:48:02
【问题描述】:

我遇到了一个填写代码的数字教科书问题。所有的代码都是永久性的,无法更改,所以只能使用声明//Write code here的区域来解决问题。

该问题要求实现 removeOdd 方法。

import java.util.Arrays;

public class RemoveTester
{
   public static int removeOdd(int[] values, int size) 
   { 
      //Write code here
   }
   public static void main(String[] args)
   {
      int[] a = { 22, 98, 95, 46, 31, 53, 82, 24, 11, 19 };
      int sizeBefore = 8;
      int sizeAfter = removeOdd(a, sizeBefore);
      System.out.print("a: [ ");
      for (int i = 0; i < sizeAfter; i++) 
      {
         System.out.print(a[i] + " ");
      }
      System.out.println("]");
      System.out.println("Expected: [ 22 98 46 82 24 ]");      

      int[] b = { 23, 97, 95, 45, 31, 53, 81, 24, 11, 19 };
      sizeBefore = 7;
      sizeAfter = removeOdd(b, sizeBefore);
      System.out.print("b: [ ");
      for (int i = 0; i < sizeAfter; i++) 
      {
         System.out.print(b[i] + " ");
      }
      System.out.println("]");
      System.out.println("Expected: [ ]");      
   }
}

我尝试实现 removeOdd 的方法是:

int evenCount = 0;
      
      for(int i = 0; i<size; i++){
         if(values[i]%2==0){
            evenCount++;
         }
      }
      int[] newValues = new int[evenCount];
      int newCount =0;
      for(int i = 0; i<evenCount; i++){
         if(values[i]%2==0){
            newValues[newCount] = values[i];
            newCount++;
         }
      }
      values = newValues;
      return evenCount;

当程序编译并运行时,main 打印原始数组 a 或 b 的开头,而不仅仅是 a 或 b 中的偶数元素。我找不到将方法 removeOdd 中的原始数组更改为仅包含偶数元素的新数组的方法。我也想不出任何其他方法来做到这一点。任何帮助将不胜感激!

【问题讨论】:

    标签: java arrays methods


    【解决方案1】:

    因为 Java 是按值传递而不是按引用传递,所以设置 values 参数的值不会更改 a 变量的值。

    您需要做的是从数组中删除所有奇数元素并将剩余的偶数元素向左移动,以便 a 的实际结果形式如下所示:

    {22, 98, 46, 82, 24, 0, 0, 0, 0, 0}

    【讨论】:

      猜你喜欢
      • 2019-07-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-20
      • 1970-01-01
      • 1970-01-01
      • 2014-03-06
      • 1970-01-01
      相关资源
      最近更新 更多