如何将未知数量的身份添加到具有最大金额的列表中

时间:2015-07-02 19:29:45

标签: java arrays

编辑:

这是一个非常粗略的草案,但我还没弄明白如何询问用户如何摆脱这些循环,因为如果我将MAX_ON_LIST设置回50.它会提示我50次,我只要用户想提示

,只希望它提示

另外,我不认为只有当积分大于或等于30且小于90

时,我才解决了如何仅向阵列添加名称和积分的问题。
 final int MAX_ON_LIST = 3;

  String[] stuName = new String[MAX_ON_LIST];
  int[] numCredits = new int[MAX_ON_LIST];

  for (int i = 0; i < stuName.length; i++) {
     do {
        try {
           stuName[i] = JOptionPane.showInputDialog("Enter student name:");

        }
        catch (NumberFormatException e) {
           stuName[i] = "";
        }
        if (stuName[i].equals("")) {
           JOptionPane.showMessageDialog(null, "Name cannot be blank");
        }
     } while (stuName[i].equals(""));
  }

  JOptionPane.showMessageDialog(null, Arrays.toString(stuName));

  for (int i = 0; i < numCredits.length; i++) {

     do {
        try {
           numCredits[i] = Integer.parseInt(JOptionPane.showInputDialog("Enter # of completed credits:"));
        }
        catch (NumberFormatException e) {
           numCredits[i] = -1;
        }
        if (numCredits[i] < 0) {
           JOptionPane.showMessageDialog(null, "# of credits can't be less than 0");
        }
     } while (numCredits[i] < 0);
  }

  JOptionPane.showMessageDialog(null, Arrays.toString(numCredits));

我在使用以下规则解决此问题时遇到了一些问题:

我必须创建一份最多50名符合条件的学生的名单。

跟踪学生姓名及其相应的学分数。

只有当一个范围内的学分数被认为是合格的,然后名称和学分将被添加到列表中。

如何在不使用ArrayList的情况下解决这个问题?

我所知道的是列表不能超过50人,但用户可以在人数达到50之前停止将人员添加到列表中。

1 个答案:

答案 0 :(得分:1)

这个怎么样?

public void addStudent(Student s) {
   if (valid(s) && yourList.size() < 50) {
      yourList.add(s);
   }
}

public boolean valid(Student s) {
   // check your credits
}