1

I am working on my hw which is about creating a student record system and I don't know why my code could not display all of my input. Could you guys give me some suggestion on solving this problem? My expected output is: 0: first name, lastname, id, student number, score

here is my code:

import java.util.Scanner;`
    public class semifinal{
        static String[][] records = new String[50][50];
        static int num = 0;
        public static void main(String args[]){
            Scanner kb = new Scanner(System.in);
            System.out.println("Welcome to the Student record management system!");
            System.out.println();
            int i, n = 0;
            while(true){
                System.out.println("enter 'input' for inputting student's records"); 
                System.out.println("enter 'update' for updating the student's records"); 
                System.out.println("enter 'search' for searching the student's records"); 
                System.out.println("enter 'display' for displaying all students according to the final exam scores.");
            String word = kb.nextLine();
            if(word.equals("input")){
                System.out.println("Input student["+num+"]:");
                System.out.println("input <first name> ");
                String firstname = kb.nextLine();
                System.out.println("input <last name> ");
                String lastname = kb.nextLine();
                System.out.println("input <ID> ");
                String id = kb.nextLine();
                System.out.println("input <Student Number>");
                String num = kb.nextLine();
                insert(firstname, lastname, id, num);
            }else if(word.equals("update")){
                System.out.println("Enter the student number to update the student records"); 
                String num = kb.nextLine(); 
                System.out.println("Update the final exam score:"); 
                String score = kb.nextLine(); 
                update(num, score);
            }else if(word.equals("search")){
                System.out.println("Enter the student number to search the student records");
                String number = kb.nextLine();
                String[] input = search(number);
                System.out.println();
                System.out.println(input[0]+" "+input[1]+" "+input[2]+" "+input[3]+" "+input[4]+" ");           

            }else if(word.equals("display")){ 
                Display();

            }else{
                System.out.println();
                System.out.println("Please enter a valid input again!");

            }
        }
    }
    public static void insert(String firstname, String lastname, String id, String num){
        for(int i = 0; i<records.length; i++){
        records[i][0] = firstname;
        records[i][1] = lastname;
        records[i][2] = id;
        records[i][3] = num;
        i++;
    }
    }
    public static void update(String num, String score){
        for(int i = 0; i<records.length; i++){
        records[i][4] = score;
        String[] update = search(num);
        update[4] = score;
        }
    }
    public static String[] search(String number){
        for(int i = 0; i<records.length; i++){
            if(number.equals(records[i][3])){
                 return records[i];
                 }
            }
            return null;
        }

   public static void Display(){
                sort();
                for(int i = 0; i<num; i++){
                    System.out.println(num+" "+records[i][0]

+" "+records[i][1]+" "+records[i][2]+" "+records[i][3]+" "+records[i][4]);
            }
        }

        public static void sort(){
            int[] sort = new int[num];
            for(int i = 0; i<num; i++){
                sort[i] = Integer.parseInt(records[i][4]);
            }
            for(int i = 0; i<num-1; i++){
                for(int j = i+1; j<num; j++){
                    if(sort[j]<sort[i]){
                        int temp = sort[j];
                        String[] x = records[j];
                        records[j] = records[i];
                        records[i] = x;
                        sort[j] = sort[i];
                        sort[i] = temp;
                    }
                }
            }
        }

Is there anything wrong on my code? I have no idea how to fix it.

8
  • Welcome to Stack Overflow! It looks like you may be asking for homework help. While we have no issues with that per se, please observe these dos and don'ts, and edit your question accordingly. (Even if this isn't homework, please consider the advice anyway.) Commented May 8, 2017 at 5:27
  • What exactly you expect out of your code? Commented May 8, 2017 at 5:28
  • sorry that i forgot to mention. Commented May 8, 2017 at 5:33
  • My expected output is: 0: first name, lastname, id, student number, score and the score would be sorted Commented May 8, 2017 at 5:34
  • Please read minimal reproducible example Commented May 8, 2017 at 5:35

2 Answers 2

1

You are shadowing your num variable

You have it set as a field

int num = 0;

but then within your code you also have

String num = kb.nextLine(); 

Probably this should be replaced with

num = Integer.valueof(kb.nextLine());
Sign up to request clarification or add additional context in comments.

Comments

1

There are many logical errors with the code. I have highlighted some of them in comments. I have fixed it partially rest you can work upon.

public static void main(String[] args) {
        Scanner kb = new Scanner(System.in);
        System.out.println("Welcome to the Student record management system!");
        System.out.println();
        int i, n = 0;
        while(true){
            System.out.println("enter 'input' for inputting student's records");
            System.out.println("enter 'update' for updating the student's records");
            System.out.println("enter 'search' for searching the student's records");
            System.out.println("enter 'display' for displaying all students according to the final exam scores.");
            String word = kb.nextLine();
            if(word.equals("input")){
                System.out.println("Input student["+ ++num +"]:");
                System.out.println("input <first name> ");
                String firstname = kb.nextLine();
                System.out.println("input <last name> ");
                String lastname = kb.nextLine();
                System.out.println("input <ID> ");
                String id = kb.nextLine();
                System.out.println("input <Student Number>");
                String studNum = kb.nextLine();
                insert(firstname, lastname, id, studNum);
            }else if(word.equals("update")){
                System.out.println("Enter the student number to update the student records");
                String num = kb.nextLine();
                System.out.println("Update the final exam score:");
                String score = kb.nextLine();
                update(num, score);
            }else if(word.equals("search")){
                System.out.println("Enter the student number to search the student records");
                String number = kb.nextLine();
                String[] input = search(number);
                System.out.println();
                System.out.println(input[0]+" "+input[1]+" "+input[2]+" "+input[3]+" "+input[4]+" ");

            }else if(word.equals("display")){
                Display();

            }else{
                System.out.println();
                System.out.println("Please enter a valid input again!");

            }
        }
    }

No need of loop in insert.

public static void insert(String firstname, String lastname, String id, String studNum){
        int index = num -1;
        records[index][0] = firstname;
        records[index][1] = lastname;
        records[index][2] = id;
        records[index][3] = studNum;
    }

No need to print index 4 in display (commented out sort as did not get time to fix that if any).

public static void Display(){
        //sort();
        for(int i = 0; i<num; i++){
            System.out.println(num+" "+records[i][0]

                    +" "+records[i][1]+" "+records[i][2]+" "+records[i][3]);
        }
    }

Now it will print records at least.

2 Comments

I inserted one record and then selected display to print. It is printing.
yes can be. I could not debug sort method but atleast it will get you going :)

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.