簡體   English   中英

使用掃描儀創建ArrayList

[英]Creating an ArrayList using a Scanner

我正在做一個使用數組列表創建學生列表的項目。 我知道如何創建一個簡單的數組列表,但是,我決定要使用Scanner方法。 不幸的是,那是我的麻煩開始的地方。 這是我的起源類的樣子:

import java.util.Scanner;

/**
 * Used to create a single student.
 */

public class Student
{
private String Name;
private int Age;
private String Gender;
private int heightInches; //inches%maxInches
private int heightFeet; //inches/maxInches
private int Inches;
private final int maxInches = 12;
private int Weight;
private String Position;
private Scanner keybd;

/**
 * Constructor
 */
public Student(){
    keybd = new Scanner(System.in);
    setStudent();
}

/**
 * Method to create a student
 */
public void setStudent(){
    System.out.println("Enter name of student:");
    Name = keybd.next();
    System.out.println("Enter age of student:");
    Age = keybd.nextInt();
    System.out.println("Enter gender of student:");
    Gender = keybd.next();
    System.out.println("Enter height in inches of student:");
    Inches = keybd.nextInt();
    if(Inches>= maxInches){
        heightFeet = Inches/maxInches;
        heightInches = Inches%maxInches;
    }
    else{
        heightInches = Inches%maxInches;}
    System.out.println("Enter position of user:");
    Position = keybd.next();
    System.out.println("Enter weight of student:");
    Weight = keybd.nextInt();
}

/**
 * Returns height of student
 */
public void getHeight(){
    System.out.println(heightFeet + "'" + heightInches + "''");
}

/**
 * Prints details of student
 */
public void printDetails(){
    if((Position.equals("Doctor")) || (Position.equals("Coach"))){
        System.out.println(Name + " who is a " + Age + " year old " + Gender + " weighs " + Weight + " and is ");
        getHeight();}
    else{System.out.println(Name + " who is a " + Age + " year old " + Gender + " is ");
        getHeight();
    }
}

}

不幸的是,當我嘗試在新的類中調用setStudent方法時,該方法將調用Student類以便實際創建列表,但遇到了問題。 我真的很想在掃描程序中添加一個“ if”語句,如果用戶希望添加另一個學生,它將循環播放,否則將結束,但是,由於我什至無法使用上述代碼創建一個新的學生,所以它不是甚至值得我花時間嘗試一下。

每個Student對象都是其自己的Student類實例。 當您在構造函數中讀取所有數據時,便可以使用該特定的Student對象。 您可以在構造函數中創建一個循環,以創建新的Student對象,但這將相當令人困惑-畢竟,構造函數的工作是創建一個對象。

(此外,讓構造函數要求用戶輸入是不好的樣式。它使該類在單元測試中不可測試,並將其與控制台綁定,使其在GUI程序中不可用。您最好閱讀以下內容所有其他學生數據,然后將其傳遞給Student構造函數。)

因此,Student類之外的一些代碼(例如,您的main方法)應具有Student列表,收集輸入並創建Student對象。

我決定嘗試使它保持簡單(很長一段時間以來第一次,我采用了簡單的方法)在我的新課上寫了:

/**
 * Method to add more students
 */
public void addStudent(){
    studentList.add  (new Student());
}

從好的方面來說,現在我可以嘗試使用if-else方法添加更多學生。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM