Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我按课程列出的视图记录工作不正常_Java_Arrays_Loops_If Statement_Switch Statement - Fatal编程技术网

Java 我按课程列出的视图记录工作不正常

Java 我按课程列出的视图记录工作不正常,java,arrays,loops,if-statement,switch-statement,Java,Arrays,Loops,If Statement,Switch Statement,我的程序还没有完成,我需要帮助。我想我在searchArray(字符串键)方法上的编码有问题 我的主要班级: import java.util.Scanner; public class StudentArray { static Scanner sc = new Scanner(System.in); static Student[] stud = new Student[100]; static int count = 0; public static

我的程序还没有完成,我需要帮助。我想我在
searchArray(字符串键)
方法上的编码有问题

我的主要班级:

import java.util.Scanner;

public class StudentArray {

    static Scanner sc = new Scanner(System.in);
    static Student[] stud = new Student[100];
    static int count = 0;

    public static void main(String[] args) {

        while (true) {
            int select;
            System.out.println("1. Add Student Record");
            System.out.println("2. View Student Record");
            System.out.println("3. Update Student Record");
            System.out.println("4. Delete Student Record");
            System.out.println("0. Exit");
            select = sc.nextInt();

            switch (select) {
                case 1:
                    addStud();
                    break;
                case 2:
                    viewStud();
                    break;
                case 3:
                    break;
                case 4:
                    break;
                case 0:
                    return;
                default:
                    System.out.println("Invalid Option");
            }
        }

    }

    public static void addStud() {
        int numID, year;
        String userName, course;

        int addMore;

        do {

            System.out.println("1. Enter Student ID: ");
            numID = sc.nextInt();
            sc.nextLine();
            System.out.println("2. Enter Student Name");
            userName = sc.nextLine();
            System.out.println("3. Enter Student Course");
            course = sc.nextLine();
            System.out.println("4. Enter Student Year");
            year = sc.nextInt();
            stud[count] = new Student(numID, year, userName, course);
            ++count;

            System.out.println("To add another Student Record Press 1");
            addMore = sc.nextInt();
        } while (addMore == 1);

    }

    public static void viewStud() {

        int select;

        System.out.println("1. View Record by ID number: " );
        System.out.println("2. View Record by Course: " );
        System.out.println("3. View Record by Course and Year: " );
        System.out.println("4. View All: " );
        select = sc.nextInt();

        while (select < 1 || select > 4){
            System.out.println("Please enter values 1-4 only: ");
            select = sc.nextInt();
        }

        switch (select){

            case 1:
                int view1;
                System.out.println("Please enter Student ID Number: ");
                view1 = sc.nextInt();
                sc.nextLine();
                searchArray(view1);
                break;
            case 2:
                String view2;
                System.out.println("Please enter Student Course: ");
                view2 = sc.nextLine();
                searchArray(view2);
                break;
            case 3:
                break;
            case 4:
                for (Student element : stud) {
                    if (null != element) {
                        System.out.println("1. Student ID: " + element.getNumID());
                        System.out.println("2. Student Name: " + element.getUserName());
                        System.out.println("3. Student Course: " + element.getCourse());
                        System.out.println("4. Student Year: " + element.getYear() + "\n");
                    }
                }
                break;

        }


    }
    public static void searchArray(int key){
        boolean isExist = false;
        int temp = 0;

        for(int x = 0; x < count; ++x){
            if(key == stud[x].getNumID()){
                temp = x;
                isExist = true;
                break;
            }

        }

        if(isExist){
            System.out.println("1. Student ID: " + stud[temp].getNumID());
            System.out.println("2. Student Name: " + stud[temp].getUserName());
            System.out.println("3. Student Course: " + stud[temp].getCourse());
            System.out.println("4. Student Year: " + stud[temp].getYear() +"\n");
        }
        else
            System.out.println("The Student ID: " +key+ " is invalid");

    }
    public static void searchArray(String key){
        boolean isExist = false;

        for(int x = 0; x < count; ++x){
            if(key.equalsIgnoreCase(stud[x].getCourse())){
                System.out.println("1. Student ID: " + stud[x].getNumID());
                System.out.println("2. Student Name: " + stud[x].getUserName());
                System.out.println("3. Student Course: " + stud[x].getCourse());
                System.out.println("4. Student Year: " + stud[x].getYear() +"\n");
                isExist = true;
            }

        }

        if(isExist == false){
            System.out.println("The Student ID: " +key+ " is invalid");
        }

    }

}

询问时出错请输入学生课程:它将始终显示学生ID:无效

您忘记了对
sc.nextLine();在
sc.nextInt()之后
。添加这些将解决您的问题


在不使用换行符的情况下,您的菜单尝试读取下一个整数,但不满意,因为“\n”不是整数。

只需将viewStud()的第2种情况替换为:

case 2:
            String view2;
            System.out.println("Please enter Student Course: ");
            sc.nextLine();//to remove residual '\n' from sc!!               
            view2 = sc.nextLine();
            searchArray(view2);
            break;

您是否尝试过调试代码并在收到“错误”时检查变量的值。如果您不知道,现在是学习调试器如何工作的好时机。谢谢,我只知道如果以前的输入是字符串sc.nextLine(),我必须在sc.nextLine()之后调用sc.nextLine()。我不知道这同样适用于这个案子。
case 2:
            String view2;
            System.out.println("Please enter Student Course: ");
            sc.nextLine();//to remove residual '\n' from sc!!               
            view2 = sc.nextLine();
            searchArray(view2);
            break;