这个数组的大小取决于我输入的内容

问题描述:

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

你能够使用ArrayList吗? [链接](https://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html) –

+0

我是新的,所以我不知道如何使用它们,以便你能告诉我怎么样如果他们能帮助我? – Incognelo

+0

停止使用数组。开始使用集合(例如,LinkedList)。 – DwB

如果你想要一个数组,你可以添加一个可变数目的元素你可以使用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来解决这个问题。