简体   繁体   中英

Having trouble printing my array of objects

I am trying to write an application that takes in a user specified number, then makes that many objects (I am calling them Students) assigns a random name and number to them then sorts their numbers. I have the sorts worked out but am having issues with printing the array. My code is below. The output that I am getting is "New Object" the number of times I enter, followed by "0: null" for each of me toString calls. Any help would be greatly appreciated. Thank you.

import java.util.Random;
import java.util.Scanner;

public class application {

public static void main(String[] args) {

    int studentSerialNumber;
    String studentName;

    System.out.println("Enter the number of students you would like to sort: ");
    Scanner scanner = new Scanner(System.in);
    int numOfStudents = scanner.nextInt();

    Student[] anArrayToSort = new Student[numOfStudents];

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

        studentSerialNumber = ((int)(Math.random() * 8888)) + 1000;
        studentName = getStudentName();

        anArrayToSort[i] = new Student(studentSerialNumber, studentName);

    }

    for (int i = 0; i < anArrayToSort.length; i++) {
        System.out.println(anArrayToSort[i].toString());

    }
}

private static String getStudentName() {

    String studentName = "";
    int i = 7;
    Random r = new Random();

    while (i > 0) {
        char c = (char) (r.nextInt(26) + 'a');
        studentName = studentName + c;
        i--;
    }

    return studentName;
}
}


public class Student {

int studentSerialNumber;
String studentName;

Student(int studentSerialNumber, String studentName) {

    studentSerialNumber = studentSerialNumber;
    studentName = studentName;
    System.out.println("New Object");

}

public String toString() {
      return studentSerialNumber + ": " + studentName;
   }
}

Assignments in constructor are bad:

Student(int studentSerialNumber, String studentName) {
    studentSerialNumber = studentSerialNumber;
    studentName = studentName;
    System.out.println("New Object");
}

this should be:

Student(int studentSerialNumber, String studentName) {
    this.studentSerialNumber = studentSerialNumber;
    this.studentName = studentName;
    System.out.println("New Object");
}

Currently you're assigning values to themselves and not to Student instance fields.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM