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++;
}
}
}
你可以帮助我得到一些东西,这样我就可以在阵列中放置任意数量的值,而不用询问有多少学生?
答案 0 :(得分:1)
如果你想要一个可以添加可变数量元素的数组,可以使用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());
}
答案 1 :(得分:0)
Java具有固定长度的数组,无法动态更改数组的大小。要做你需要的东西,有java.util.ArrayList类。
(看看Reginol_Blindhop的答案。无论是ArrayList还是LinkedList代码都是一样的。)
但是如果你需要数组,你可以为每个输入创建一个+1大小的新数组,复制之前的值并将new放入最后一个元素。为此,有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
循环并检查用户是否通过添加特殊内容(例如“exit”,“end”,“bye”,“:q”或任何您想要的内容)来完成输入。
答案 2 :(得分:0)
你应该使用List这样的东西,而不是数组。作为一般经验法则,当您不知道将在手数中添加多少元素时,请使用List。大多数人可能会使用ArrayList解决这个问题。