这个数组的大小取决于我输入的内容
问题描述:
import java.util.Scanner;
public class Singleton{
public static void main(String args[]){
Scanner input = new Scanner(System.in);
System.out.println("Enter number of students: ");
int number = input.nextInt();
String names[] = new String[number];
for(int counter = 0; counter < 100; counter++){
System.out.print("Enter name: ");
names[counter] = input.nextLine();
names[counter] = names[counter].toLowerCase();
}
int grades[] = new int[names.length];
int count = 0;
for(String x: names){
System.out.print(x + "'s grade: ");
grades[count] = input.nextInt();
count++;
}
count = 0;
for(String x: names){
System.out.println(x + "'s grade is " + grades[count] + ".");
count++;
}
}
}
你能帮我弄点东西吗,这样我就可以在数组中放入任意数量的值而不用问有多少学生呢?这个数组的大小取决于我输入的内容
答
如果你想要一个数组,你可以添加一个可变数目的元素你可以使用ArrayList。即
import java.util.ArrayList;
ArrayList<String> names = new ArrayList<String>();
for(int counter = 0; counter < 100; counter++){
System.out.print("Enter name: ");
names.add(input.nextLine());
}
答
Java有固定长度的数组,并且不可能动态地改变数组的大小。要做你需要的就是java.util.ArrayList类。
(看Reginol_Blindhop的答案。无论是ArrayList的或LinkedList的代码是一样的)。
但是如果你需要数组可以用+1尺寸为每一个输入创建新的数组,复制有以前的值,并把新进入最后一个元素。要做到这一点,有System.arraycopy方法。
代码可能看起来像:
String[] names = new String[1];
for(int counter = 0; counter < 100; counter++){
System.out.print("Enter name: ");
String nextName = input.nextLine();
String[] tempNames = new String[names.length + 1];
System.arraycopy(names, 0, tempNames, 0, names.length);
tempNames[names.length] = nextName;
names = tempNames;
}
PS。当然,对于任何解决方案,最好是使用while
循环和检查用户是否通过将一些特别的东西,如“退出”完成输入,“结束”,“再见”,“:q”或任何你想。
答
您应该使用一个List这样的事情,而不是一个数组。作为一般的经验法则,当您不知道将要添加到数组中的元素数量时,请使用List代替。大多数人可能会通过使用ArrayList来解决这个问题。
你能够使用ArrayList吗? [链接](https://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html) –
我是新的,所以我不知道如何使用它们,以便你能告诉我怎么样如果他们能帮助我? – Incognelo
停止使用数组。开始使用集合(例如,LinkedList)。 – DwB