从现有数组中填充两个新数组



我已经有一个数组,其随机数在0-999之间。我还创建了两个新的数组,一个大小正确,可以容纳所有数字0-499,另一个大小合适,可以容纳数字500-999。

然后,问题是在数组中循环保存所有数字,并将正确的数字0-499和500-999复制到新的数组中。

有人知道正确的方法吗?我花了很多天的时间试图弄清楚这一点。

到目前为止我得到的:

public static void main(String[] args) {
Scanner scannerObject = new Scanner(System.in);
Random generator = new Random();
System.out.print("How many numbers between 0 - 999?" );
int number= scannerObject.nextInt(); 
int [] total= new int[number]; 
for(int index = 0; index < total.length; index++ ) 
{   
total[index] = generator.nextInt(1000); 
}
System.out.println("Here are the random numbers:");
for(int index = 0; index < total.length; index++ )
{   
System.out.print(total[index]+ " ");    
}
int lowNumber=0;
int largeNumber = 0;
for(int index = 0; index < total.length; index++ )  
{   
if (total[index] < 500)
{       
lowNumber++;    
}
if (total[index] >= 500)
{
largeNumber++;
}
}
System.out.println();
System.out.println(lowNumber);
System.out.println(largeNumber);
int [] totalLownumber = new int [lowNumber];
int [] totalLargeNumber = new int [largeNumber];
for(int index = 0; index < total.length; index++ )  
{   // TODO
}
}

您可以采取的两种方法如下:

  1. 您可以遍历初始数组,计算您拥有的元素,并使用计数器值来定义所需数组的大小。然后再次遍历原始数组,并将元素复制到它们各自的数组中。您可以再次使用计数器值(您需要首先重置它们),以便跟踪当前数字需要放在哪个数组位置。这应该与你正在做的类似。

  2. 考虑使用可变长度的数据结构,如List(Java中的ArrayList)。这将允许您遍历原始数组,并将数字分配给它们各自的列表(让我们称它们为largeNumberListlowNumberList)。由于这些集合具有动态大小,您只需要遍历数组一次,并在执行过程中进行分配。

后一种方法通常更常用,但是,由于这个问题似乎与家庭作业有关,我建议您尝试两种方法并进行比较。

试试这个:

int lowIndex = 0;
int largeIndex = 0;
for(int index = 0; index < total.length; index++ ) {
if (total[index] < 500) {
totalLowNumber[lowIndex++] = total[index];
} else {
totalLargeNumber[largeIndex++] = total[index];
}

最新更新