一个数组取决于我输入的内容

时间:2017-09-22 20:23:30

标签: java arrays

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++;
        }
    }
}
你可以帮助我得到一些东西,这样我就可以在阵列中放置任意数量的值,而不用询问有多少学生?

3 个答案:

答案 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解决这个问题。