我正在上课,我被困了.我相信我非常接近,但不知道去哪里.当我运行我的代码我得到我的数组十次,这必须与我的循环有关.另外,在我的阵列中,我不知道如何创建20-50的范围.目前我的是1-50.最后,我的输出并不完全是我需要的.任何帮助将不胜感激.这是问题,到目前为止我的代码.
创建一个名为array1的数组,其中包含10个随机整数,范围为[20 50].然后创建一个名为array2的数组,其数组大小与array1相同.然后将array1中大于35的数字复制到array2.如果没有足够的数字复制到array2,则填充array2.例如,如果array1是{34,23 45,39,28,41,33,23,42,48},则array2将是{45,39,41,42,48,0,0,0,0,0 }
import java.util.Random;
import java.util.Scanner;
import java.util.Arrays;
public class Arraylab6 {
public static void main(String[] args) {
int x;
int[] array1 = new int[10];
int[] array2 = new int[10];
Random rand = new Random();
for (int i = 0; i < array1.length; i++) {
int h = rand.nextInt(50);
array1[i] = h;
}
System.out.println(Arrays.toString(array1));
for (int i = 0; i < array1.length; i++) {
if (array1[i] > 35) {
array2[i] = array1[i];
} else {
array2[i] = 0;
}
System.out.println(Arrays.toString(array1));
System.out.println(Arrays.toString(array2));
}
}
}
Run Code Online (Sandbox Code Playgroud)
我不知道如何创建20-50的范围.目前我的是1-50.
int h = rand.nextInt(31)+20; //nextInt(31) = range from 0-30, then add 20 to the result
Run Code Online (Sandbox Code Playgroud)
当我运行我的代码我得到我的阵列十次
您的println
呼叫在您的for
循环中,将其向下移动.
此外,您的解决方案不满足要求,因为您将任何数字> 35放入与另一个数组相同的索引中.相反,请跟踪插入索引,并在复制时移动它int
:
int copyIndex = 0;
for (int i = 0; i< array1.length; i++)
{
if (array1[i]>35){
array2[copyIndex++]=array1[i]; //Add 1 to copyIndex each time a value is copied
}
Run Code Online (Sandbox Code Playgroud)
你也不需要用零"填充",因为它int
的默认值已经存在0
.