0

我正在尝试通过让用户输入标识号来访问并行数组的全部内容。该数组似乎只返回前四个项目 [0-3] 的结果。其余部分作为未找到返回。使用 Eclipse,我尝试将数组的维度完全划分为 10 个内存位置,但是,我得到了错误。

import java.util.*;
import javax.swing.JOptionPane;

public class StudentIDArray {
    static String[] studentNum = new String[]
            {"1234", "2345", "3456", "4567", "5678", "6789", "7890", "8901", "9012", "0123"};
    static String[] studentName = new String[]
            {"Peter", "Brian", "Stewie", "Lois", "Chris", "Meg", "Glen", "Joe", "Cleveland", "Morty"};
    static double[] studentGpa = new double[]
            {2.0, 3.25, 4.0, 3.6, 2.26, 3.20, 3.45, 3.8, 3.0, 3.33};

    public static void main(String[] args) {
        String studentId = null;
        while ((studentId = JOptionPane.showInputDialog(null, "Please enter your Student ID number to view your name and GPA")) != null) {
            boolean correct = false;
            for (int x = 0; x < studentId.length(); ++x) {
                if (studentId.equals(studentNum[x])) {
                    JOptionPane.showMessageDialog(null, "Your name is: " + studentName[x] + "\n" + "Your GPA: " + studentGpa[x], "GPA Results", JOptionPane.INFORMATION_MESSAGE);
                    correct = true;
                    break;
                }
            }
            if (!correct) {
                JOptionPane.showMessageDialog(null, "Student ID not found, try again.", "Not found", JOptionPane.INFORMATION_MESSAGE);
            }
        }
    }
}
4

3 回答 3

4

在 for 循环中更改:

studentId.length();

studentNum.length;

您现在正在使用输入字符串的长度,而您需要数组的长度。

于 2015-03-08T22:30:52.473 回答
3

您不应该在 for 循环中迭代“studenNum”数组吗?您有一个错字/错误,您正在迭代错误的变量。

于 2015-03-08T22:31:01.700 回答
2

请看你的for循环:

for (int x = 0; x < studentId.length(); ++x)

studentNum您使用的是用户输入的长度,而不是使用数组的长度,该长度studentId很可能是 4 个字符长(由于您在 中给定的学生 ID studentNum)。这就是为什么您的程序只能在索引 0-3 上找到条目(该数组似乎只返回前四个项目 [0-3] 的结果)。

将其更改为

for (int x = 0; x < studentNum.length; ++x)

要解决这个问题。

于 2015-03-08T22:31:19.283 回答