Java 我的偶数方法没有';t返回偶数
此代码按原样打印数组(1、7、8、22、37、55、80),而不计算其偶数 我想要的输出(8,22,80) 我得到的输出(1,7,8,22,37,55,80)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?建
///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();
}