Java 我的偶数方法没有';t返回偶数

Java 我的偶数方法没有';t返回偶数,java,arrays,methods,Java,Arrays,Methods,此代码按原样打印数组(1、7、8、22、37、55、80),而不计算其偶数 我想要的输出(8,22,80) 我得到的输出(1,7,8,22,37,55,80) ///getEvens()方法 公共静态int[]getEvens(int a[]{ int-myEvens=0; for(int i=0;i MyEvsNe++/Cuth>要做什么?您将分配给这样一个数组的大小是什么?使用ARLayLIST或类似于在另一个帖子中建议的数组,而不是数组。我肯定您会处理它。为什么?是否将数组大小指定为3?建

此代码按原样打印数组(1、7、8、22、37、55、80),而不计算其偶数

我想要的输出(8,22,80)

我得到的输出(1,7,8,22,37,55,80)

///getEvens()方法
公共静态int[]getEvens(int a[]{
int-myEvens=0;
for(int i=0;i
实际上,您只是排序并返回传递到方法中的相同数组。
在计算“myeven”的if语句中,可以向新数组中添加[i],然后返回该数组,而不是a(输入参数)。

您的代码试图计算数组中的even数。 正如@jeff carey所说的,您可以创建新的数组,并对其进行均衡。 下面是您的代码片段

   public static List<int> getEvens(int []  a) {

int myEvens = 0;
        int [] evenArray=new int[3];
        List<int> evenList=new List<int>();
        int length=a.Length;
        int index=0;

for (int i = 0; i <length; i++) {

  if (a[i] % 2 == 0) {

     myEvens++;
     evenList.Add(a[i]);
  }    

}

 Array.Sort(a);

 return evenList;
}
公共静态列表getEvens(int[]a){
int-myEvens=0;
int[]evenArray=新的int[3];
List evenList=新列表();
int length=a.length;
int指数=0;

对于(int i=0;i问题之一是您没有从getEvens()方法返回任何内容,因此您的第二个
toString
将无法提供您所需的内容。此外,您还可以递增
myEvens
,但此值用作计数器。您需要保存数组中的偶数值

使用ArrayList可以轻松完成此操作:

//import ArrayList
import java.util.ArrayList;
//before method
List<Integer> evens = new ArrayList<Integer>();
//in the for-loop
evens.add(a[i]);
//导入ArrayList
导入java.util.ArrayList;
//方法之前
List evens=new ArrayList();
//在for循环中
添加(a[i]);
请参阅有关ArrayList的更多信息

如果要继续使用数组,可以创建一个长度为myEvens的新数组,再次运行原始循环,并将每个偶数值添加到新数组中。但是,要做到这一点,您需要一种方法来跟踪新数组中的索引


排序算法在线提供。
array.sort()
适用于数组值。给出了排序的ArrayList实现。

现在,您所要做的就是计算数组中的偶数,如果这就是您想要做的,这很好。如果您确实希望将它们提取到自己的数组中,那就更麻烦了,因为数组不是动态的

您有两种选择,我更喜欢后者:

  • 创建一个
    列表
    并将值存储在该列表中,然后将其提取到数组中(如果需要):


  • 因为没有人提到它,下面是Java 8的简明版本:

    public static int[] getEvens(int a[]) {
        Arrays.stream(a).filter(i -> i % 2 == 0).toArray();
    }
    

    您的代码标识了EvNES,但没有考虑到它们的任何内容。可能考虑创建一个新数组,将EvNES添加到该数组中,然后返回它。您期望什么?代码> MyEvsNe++/Cuth>要做什么?您将分配给这样一个数组的大小是什么?使用ARLayLIST或类似于在另一个帖子中建议的数组,而不是数组。我肯定您会处理它。为什么?是否将数组大小指定为3?建议使用另一种数据结构是否更适合这种情况?不能将泛型与基元类型一起使用。
    List
    是不允许使用的。这取决于您的错误。我在这里列出了我的建议作为指导。后一种建议仅适用于Java 8,因此请确保您已安装了它。err或者我得到:粗体符号:类列表位置:class Method2 List evens=new ArrayList();^1错误您应该将
    java.util.List
    java.util.ArrayList
    导入到您的类中。如果您不介意,请将其放在我的代码中并在此处显示。我正在努力尝试,但仍然会出错(第一个选项)我不介意;我只是选择在这里给你一个提示。如何将它合并到代码中完全取决于你自己。我得到的错误:**符号:类列表位置:类方法2列表evens=new ArrayList()“^1错误**可能值得一提的是,在处理列表时,静态方法是等效的方法。如果您不介意,请将其放在我的代码中并在此处显示。我非常努力,但仍然得到错误导入java.util.*;ArrayList evens=new ArrayList();公共静态列表getEvens(int[]a){for(int I:a){if(I%2)==0{evens.add(i);}Collections.sort(evens);}return evens;}这看起来很干净..让我试试..不幸的是,我无法安装Java 8..只有6个我认为您缺少了一个
    return
    ;)
    // Declare this list outside of the loop
    List<Integer> evens = new ArrayList<>();
    if(a[i] % 2 == 0) {
        evens.add(a[i]);
    }
    return evens.toArray(new int[0]);
    
    // Just return this explicitly
    return Arrays.stream(a).filter(i -> i % 2 == 0)
                           .toArray();
    
    public static int[] getEvens(int a[]) {
        Arrays.stream(a).filter(i -> i % 2 == 0).toArray();
    }