gpt4 book ai didi

java - 如何定义一个没有定义长度的数组

转载 作者:行者123 更新时间:2023-12-01 22:31:42 24 4
gpt4 key购买 nike

问题是:获得10人的分数;那么你需要问每个分数高于 80 分的人是否想继续学习,“y”表示"is",“n”表示“否”。接下来,您需要获取他们在数组中的位置,因此如果人员编号 5 array[5]=90 并回答“y”,它将使用 newarray[1]=[5(his location)] 创建一个新数组

我的问题是如何在不知道新数组长度的情况下定义它(会有多少个“y”)。编辑:

import java.util.Scanner;
public class p44_52 {
static Scanner reader = new Scanner(System.in);
static void input(int []a)
{
for(int i=0; i<a.length;i++){
System.out.println("Write an score of a student");
a[i]= reader.nextInt();
}
}


static void output(int []b)
{
for (int i =0; i<b.length;i++)
{
System.out.println("serial number of who choose to continue and score above 80 "+ b[i]);
}
}

public static void main(String[]args){

char c = 'g';
int count =0;
int []score = new int[10];
kelet(score);

for(int i=0; i<score.length;i++)
{
if(score[i]>80)
{
System.out.println("Studnet number "+i+ " Do you want to continue?");
c = reader.next().charAt(0);
if(c == 'y'){
//Here i want to make the new array(length isn't known) for their locationnumbers
}
}
}


}

}

最佳答案

您可以创建一个与完整列表大小相同的临时数组(因为您知道这是可能需要的最大大小),并在其中填充选择继续的尽可能多的学生。临时数组中实际的元素可能会少于它可以容纳的元素,因为有些学生不会继续,因此您可以创建一个大小合适的新数组(现在您知道了)并使用 System.arraycopy()将所有元素复制到正确大小的数组中。

这不是最有效的方法,但并不可怕(它只是使用了一个额外的数组分配和复制操作),而且对于家庭作业来说它当然足够好了。除了数组之外,它不使用任何其他东西。

一般来说,这是您在编写程序时会不时使用的一种技术:如果在完成某些操作之前您无法执行某些操作,那么寻找一种方法将操作分解为多个操作步骤,以便您可以按照可能的顺序重新排列步骤,但仍会产生相同的结果。更好的是找到满足您需求的不同数据结构(就像 ArrayList 那样,因为它的容量可以在运行时增长),但有时您不能直接放入不同的数据结构,并且这种方法分解问题并重新安排步骤可能会很有用。

关于java - 如何定义一个没有定义长度的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27641643/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com