Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

I need to make this program run without using arrayLists, I need to use regular

ID: 3836107 • Letter: I

Question

I need to make this program run without using arrayLists, I need to use regular arrays. It takes an input from the file. Here is the code I've used so far:

public class Student
{
private String fname, lname;
private int grade;

public Student()
{
super(); //gives us the ability to override
  

}

public Student (String fname, String lname, int grade)
{
this.fname = fname;
this.lname = lname;
this.grade = grade;
}

public String getFname() {
return fname;
}

public void setFname (String fname) {
this.fname = fname;
}

public String getLname() {
return lname;
}

public void setLname(String lname) {
this.lname = lname;
}

public int getGrade() {
return grade;
}

public void setGrade(int grade) {
this.grade = grade;
}

public String toString()
{
return fname + " " + lname + " " + grade;
}
}

import java.util.Scanner;
import java.util.ArrayList;
import java.io.*;

public class Students
{
public static void printAllStudents(Student[] students){
for(int i=0;i<students.length;i++){
System.out.println(students[i]);
}
}

public static void printAllStudentsByFirstName(Student[] students,String firstName){
String name=firstName.split(" ")[1];
int len=name.length();
for(int i=0;i<students.length;i++){
try{
if(students[i].getFname().substring(0, len).equalsIgnoreCase(name)){
System.out.println(students[i]);
}
}
catch (Exception e) {
// TODO: handle exception
}
}
}

public static void printAllStudentsByLastName(Student[] students,String lastName){
String name=lastName.split(" ")[1];
int len = name.length();
for(int i=0;i<students.length;i++){
try{
if(students[i].getLname().substring(0, len).equalsIgnoreCase(name)){
System.out.println(students[i]);
}
}
catch (Exception e) {
// TODO: handle exception
}
}
}

public static void printAllStudentsByGrades(Student[] students,String interval){
int start=Integer.parseInt(interval.split(" ")[1]);
int end=Integer.parseInt(interval.split(" ")[2]);
for(int i=0;i<students.length;i++){
if(students[i].getGrade()>=start && students[i].getGrade()<=end){
System.out.println(students[i]);
}
}
}

public static void sort(Student[] students)
{
int n = students.length;
int k;
for (int m = n; m >= 0; m--) {
for (int i = 0; i < n - 1; i++) {
k = i + 1;
if (students[i].getGrade() > students[k].getGrade()) {
Student temp=new Student();
temp = students[k];
students[k]=students[i];
students[i]=temp;
}
}
}
printAllStudents(students);
}

public static void main (String[] args) throws IOException
{
String first_name, last_name;
int grade;
Scanner sc = new Scanner(System.in);
Scanner fileInput = new Scanner(new File("students.txt"));
ArrayList<Student> list=new ArrayList<Student>();
  
while (fileInput.hasNext())
{
first_name = fileInput.next();
last_name = fileInput.next();
grade = fileInput.nextInt();

Student st = new Student(first_name, last_name, grade);
list.add(st);
}
  
Student[] students=new Student[list.size()];
  
for(int i=0;i<list.size();i++){
students[i]=list.get(i);
}
  
System.out.println("Please choose from below operations: ");
System.out.println("1. printall");
System.out.println("2. firstname <name>");
System.out.println("3. lastname <name>");
System.out.println("4. interval m n");
System.out.println("5. sort");
System.out.println("6. end");

while (true)
{
System.out.println("Enter choice:");
String choice = sc.nextLine();
if(choice.equals("printall"))
printAllStudents(students);
else if(choice.indexOf("firstname")==0)
printAllStudentsByFirstName(students, choice);
else if(choice.indexOf("lastname") == 0)
printAllStudentsByLastName(students, choice);
else if(choice.indexOf("interval") == 0)
printAllStudentsByGrades(students, choice);
else if(choice.equals("sort"))
sort(students);
else if(choice.equals("end"))
break;
}
}

}

HERES THE FILE:

John Smith 90
Barack Obama 95
Al Clark 80
Sue Taylor 55
Ann Miller 75
George Bush 58
John Miller 65

Explanation / Answer

Student.java

public class Student
{
    private String fname, lname;
    private int grade;

    public Student()
    {
        super(); //gives us the ability to override
      

    }

    public Student (String fname, String lname, int grade)
    {
        this.fname = fname;
        this.lname = lname;
        this.grade = grade;
    }

    public String getFname() {
        return fname;
    }

    public void setFname (String fname) {
        this.fname = fname;
    }

    public String getLname() {
        return lname;
    }

    public void setLname(String lname) {
        this.lname = lname;
    }

    public int getGrade() {
        return grade;
    }

    public void setGrade(int grade) {
        this.grade = grade;
    }

    public String toString()
    {
        return fname + " " + lname + " " + grade;
    }
}

Students.java

import java.util.Scanner;
import java.util.ArrayList;
import java.io.*;

public class Students
{
    public static void printAllStudents(Student[] students){
        for(int i=0;i<students.length;i++){
            System.out.println(students[i]);
        }
    }

    public static void printAllStudentsByFirstName(Student[] students,String firstName){
        String name=firstName.split(" ")[1];
        int len=name.length();
        for(int i=0;i<students.length;i++){
            try{
                if(students[i].getFname().substring(0, len).equalsIgnoreCase(name)){
                    System.out.println(students[i]);
                }
            }
            catch (Exception e) {
                // TODO: handle exception
            }
        }
    }

    public static void printAllStudentsByLastName(Student[] students,String lastName){
        String name=lastName.split(" ")[1];
        int len = name.length();
        for(int i=0;i<students.length;i++){
            try{
                if(students[i].getLname().substring(0, len).equalsIgnoreCase(name)){
                    System.out.println(students[i]);
                }
            }
            catch (Exception e) {
                // TODO: handle exception
            }
        }
    }

    public static void printAllStudentsByGrades(Student[] students,String interval){
        int start=Integer.parseInt(interval.split(" ")[1]);
        int end=Integer.parseInt(interval.split(" ")[2]);
        for(int i=0;i<students.length;i++){
            if(students[i].getGrade()>=start && students[i].getGrade()<=end){
                System.out.println(students[i]);
            }
        }
    }

    public static void sort(Student[] students)
    {
        int n = students.length;
        int k;
        for (int m = n; m >= 0; m--) {
            for (int i = 0; i < n - 1; i++) {
                k = i + 1;
                if (students[i].getGrade() > students[k].getGrade()) {
                    Student temp=new Student();
                    temp = students[k];
                    students[k]=students[i];
                    students[i]=temp;
                }
            }
        }
        printAllStudents(students);
    }

    public static void main (String[] args) throws IOException
    {
        String first_name, last_name, line = "";
        int grade, lines = 0, i;
       char ch;
        Scanner sc = new Scanner(System.in);
        Scanner fileInput = new Scanner(new File("students.txt"));
        //Counting the number of lines in the file.
       while (fileInput.hasNextLine())
       {
           line = fileInput.nextLine();
           lines++;}
       fileInput = new Scanner(new File("students.txt"));
       //Declaring Student array of size lines.
       Student[] students=new Student[lines];
       i = 0;
        while (fileInput.hasNext())
        {
            first_name = fileInput.next();
            last_name = fileInput.next();
            grade = fileInput.nextInt();

            Student st = new Student(first_name, last_name, grade);
            students[i++] = st;
        }
        /*This code is not needed now.
        Student[] students=new Student[list.size()];
      
        for(int i=0;i<list.size();i++){
            students[i]=list.get(i);
        }
       */
      
        System.out.println("Please choose from below operations: ");
        System.out.println("1. printall");
        System.out.println("2. firstname <name>");
        System.out.println("3. lastname <name>");
        System.out.println("4. interval m n");
        System.out.println("5. sort");
        System.out.println("6. end");
     
        while (true)
        {
            System.out.println("Enter choice:");
            String choice = sc.nextLine();
            if(choice.equals("printall"))
                printAllStudents(students);
            else if(choice.indexOf("firstname")==0)
                printAllStudentsByFirstName(students, choice);
            else if(choice.indexOf("lastname") == 0)
                printAllStudentsByLastName(students, choice);
            else if(choice.indexOf("interval") == 0)
                printAllStudentsByGrades(students, choice);
            else if(choice.equals("sort"))
                sort(students);
            else if(choice.equals("end"))
                break;
        }
    }

}

Note:

The exception handling in the two functions to print names by first names and last names are actually not needed because we don't need to do anything if the present name does not matches in the loop because the next ones could match.