Java 从现有数组错误生成新数组
我试图根据每个元素的值,在现有数组的基础上创建一个新数组。如果现有数组中的某个数字处于给定条件,则需要将该数字添加到新数组中,但新数组中的值均为0 这里的代码有什么问题Java 从现有数组错误生成新数组,java,arrays,Java,Arrays,我试图根据每个元素的值,在现有数组的基础上创建一个新数组。如果现有数组中的某个数字处于给定条件,则需要将该数字添加到新数组中,但新数组中的值均为0 这里的代码有什么问题 double[] gpa = {1.0, 2.0, 3.0, 4.0, -1.0, 5.0}; double[] newGpa = null; for (int i = 0; i < gpa.length; i++) { if (gpa[i] > 0 && gpa[i] <= 4.0)
double[] gpa = {1.0, 2.0, 3.0, 4.0, -1.0, 5.0};
double[] newGpa = null;
for (int i = 0; i < gpa.length; i++) {
if (gpa[i] > 0 && gpa[i] <= 4.0) {
newGpa = new double[i + 1];
newGpa[i] = gpa[i];
}
}
double[]gpa={1.0,2.0,3.0,4.0,-1.0,5.0};
double[]newGpa=null;
对于(int i=0;i 如果(gpa[i]>0&&gpa[i]您正在for循环内重新初始化数组变量newGpa
newGpa = new double[i+1];
这就是为什么会得到所有零。请正确使用ArrayList或调整数组大小(分配一个长度为i+1的临时数组,从newGpa复制值,然后将临时数组重新分配给newGpa)
让我们看看这一行:
newGpa = new double[i + 1];
执行每个条件检查后(gpa[i]>0&&gpa[i]我建议:
double[] gpa = {1.0, 2.0, 3.0, 4.0, -1.0, 5.0};
//create a new array with one index less
double[] newGpa = new double[gpa.length - 1];
for (int i = 0; i < gpa.length; i++) {
if (gpa[i] > 0 && gpa[i] <= 4.0) {
newGpa[i] = gpa[i];
}
}
new double[i+1]
创建一个初始化为全零的新数组…如果要调整数组大小,必须手动将旧值复制到新数组中,或者您应该使用这样的类自动执行此操作。的可能重复
newGpa = new double[i + 1];
double[] gpa = {1.0, 2.0, 3.0, 4.0, -1.0, 5.0};
//create a new array with one index less
double[] newGpa = new double[gpa.length - 1];
for (int i = 0; i < gpa.length; i++) {
if (gpa[i] > 0 && gpa[i] <= 4.0) {
newGpa[i] = gpa[i];
}
}
newGpa = list.toArray(new String[list.size()]);