【问题标题】:Storing multiple user input in arrays在数组中存储多个用户输入
【发布时间】:2016-02-13 07:09:25
【问题描述】:

此程序将询问用户学生姓名和成绩,然后显示两者。用户输入的值存储在 array 名称和 array 等级中。我使用计数器控制的 for 循环将用户输入收集到数组中。如果我想为每个学生输入多个成绩怎么办? 对编程相当陌生,任何输入或想法将不胜感激如何做到这一点......

public class Five {

public static void main(String[] args) {
    int students;

    Scanner input = new Scanner(System.in); //created input scanner


System.out.println("How many students are on your roster? If you wish to exit please type 00: ");// Initializing statement for program************
students = input.nextInt();

       if(students == 00) { //Exit program****************
       System.out.println("Maybe Next Time!!");
           System.exit(0);
         }

String[] names = new String[students];// Array names*******
String[]grade = new String[students]; //Array grade********

// Use Counter to go through Array**************************
        for(int counter =0; counter < students; counter++){
        System.out.println("Enter the name of a student: " +  (counter +1));
        names [counter] = input.next();
        System.out.println("Now enter that students grade A, B, C, D OR F: ");
        grade [counter] = input.next();
        }

input.close();// End Scanner object
//Use For loop for Printing names and grades entered by the user**************
System.out.println("Your students names and grades are as follows: ");
        for(int counter =0; counter < students; counter++){
        System.out.println("Name: " + names[counter]);
        System.out.println("Grade: " + grade[counter]);
        }
    }
}

【问题讨论】:

  • 对于多个等级,你必须提前知道它们的数量,因为你使用的是数组,并且只有在你提前知道大小的情况下才能初始化它们
  • 您了解对象 (POJO) 了吗?您可以在其中找到 get 和 set 方法(getter 和 setter)的类?或者告诉我你将为每个学生输入多少个年级?就像每个学生都会有X个等级。英语一本,物理一本,化学一本,等等。
  • 使用类和对象或至少使用 HashMap 会更好。

标签: java arrays user-input


【解决方案1】:

您可以使用一个参差不齐的数组来输入多个成绩 您需要声明它,所以这是一种方法。

    String[] names = new String[students];// Array names*******
    String[][]grade = new String[names][]; //Array grade********

      for(int i=0; i<names[i];i++)
  {System.out.println("How many grades will you enter for "+names[i]+"?")
   int temp=input.nextInt();
  for(int j=0; j<names[i][temp-1];j++){
  grad[i][j]=input.next();         
           }}

【讨论】:

  • 这是否允许超过 2 个等级?如果您不知道每个学生将获得的分数怎么办。我正在尝试思考现实世界。
【解决方案2】:

您可能应该创建一个 Student 类和一个 Grades 类并将它们存储为对象。使用数据结构,您的最佳选择是

HashMap<String, List<String>> grades = new HashMap<>();
grades.put("Jack", new ArrayList<>());
grades.get("Jack").add("A");

你可以了解更多关于HashMaphere

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-22
    • 2018-10-12
    • 1970-01-01
    • 1970-01-01
    • 2014-06-04
    相关资源
    最近更新 更多