簡體   English   中英

將信息從一個班級調用到另一班級?

[英]Calling the info from one class to another class?

我目前對編程和使用 setter 和 getter 的工作還比較陌生。

我有一些設置,我有一個學生班級,其中包含有關所述學生的信息,包括他們的名字、中間名和姓氏、他們的學生 ID 和他們的專業。

我需要設置它,如果他們的學生 ID 小於零,它會自動將其設置為 -1。 如果他們不輸入任何內容,我還需要將主要設置為未定。

我還需要覆蓋 toString 方法並將所有這些信息打印出來。

我覺得我有第一部分的名字,但我不確定其余部分。 我不確定在使用 setter 和 getter 的同時應該如何使用 toString 方法。

下面是我完成所有工作的 Student 類。

import java.util.Objects;
import java.util.Scanner;
public class Student {
        String first;
        String middle;
        String last;
        String major = "Undecided";
        static int studentID = -1;

        public Student(String first, String middle, String last) {
                Objects.requireNonNull(first);
                Objects.requireNonNull(last);
        }

        public void setFirst(String A) {
                first = A;
        }

        public void setMiddle(String B) {
                middle = B;
         }

        public void setLast(String C) {
                last = C;
        }

        private String getFirst() {
                return first;
        }

        private String getMiddle() {
                return middle;

        }

        private String getLast() {
                return last;
        }

        private String getMajor() {
            return major;
            
        }
        public void setMajor(){
        
            
        
        static void register(int a){
                if (a < 0) {
                    studentID = a;
                } else {
                    studentID = getID(a);
                }
        }

        private static int getID(int a) {
                if (studentIDInput < 0) {
                    studentID = -1;
                } else {
                    studentID = a;
                }
            return studentID;
        }

        public static void main(String[] args) {
                String first = "abc";
                String middle = "def";
                String last = "ghi";

                Scanner sc = new Scanner(System.in);
                String majorInput = sc.next();
                int studentIDInput = sc.nextInt();

                Student student1 = new Student(first, middle, last);

                System.out.println(student1.getFirst().toString() + " " + student1.getMiddle().toString() + " " + student1.getLast().toString() + '\n' + "Major:" + " " + student1.getMajor().toString() + '\n' );
        }
        
        @Override
        public String toString() {
            return ;
            
        }

}

我還包含了 Driver 類,僅供參考。


public class Driver {
        static String first;
        static String middle;
        static String last;


        public static void main(String[] args){
                Student student1 = new Student(first, middle, last);
                student1.setFirst("Mikayla");
                student1.setMiddle("Rose");
                student1.setLast("Knox");


        }
}

你有這個構造函數:

public Student(String first, String middle, String last) {
    Objects.requireNonNull(first);
    Objects.requireNonNull(last);
}

它的工作是檢查名字和姓氏是否不為null ,但除了檢查之外,它不會對值做任何事情。 構造函數的工作是構造對象,即初始化其成員變量。 當你的構造函數完成后,你應該有一個可用的對象,而不必在其中調用任何 setter。

你需要補充一點:

public Student(String first, String middle, String last) {
    Objects.requireNonNull(first);
    Objects.requireNonNull(last);
    this.first = first;
    this.middle = middle;
    this.last = last;
}

請注意,這里不需要使用 setter,因為類中的代碼可以直接訪問成員變量。 不過,您可以根據需要使用 setter。

至於toString :這是一個主要用於調試的方法,它顯示有關它被調用的對象的一些有用信息。 你可以像下面那樣實現它,用一點?:確保只打印中間名,如果它不為null

@Override
public String toString() {
    return first + " " + (middle != null ? middle + " " : "") + last;
}

我會把它留給你還包括專業和 ID。

使用Scanner :您使用掃描儀從某處獲取輸入,例如來自用戶的輸入。 toString或任何 setter 或 getter 中不需要它。 這些都是應該非常簡單的方法,而不是像Scanner這樣的 I/O 類。

如果您正在使用構造函數,則實際上並不需要 setter。 嘗試這樣的事情:

class Student {
    private String first;
    private String middle;
    private String last;
    private String major;
    private int studentID;
    
    public Student(String first, String middle, String last) {
        this(first, middle, last, "undecided", -1);
    }
    
    public Student(String first, String middle, String last, String major, int studentID) {
        this.first = first;
        this.middle = middle;
        this.last = last;
        this.major = major;
        this.studentID = studentID;
    }
    
    @Override
    public String toString() {
        return "first: " + first + "\nmiddle: " + middle + "\nlast: " + last + "\nmajor: " + major + "\nid: " _ studentID;
    }
}

這樣,當您創建具有 3 個參數的新 Student 對象時,最后 2 個參數會自動設置為“未定”和 -1。 如果出現您擁有 ID 而不是主要(或相反)的情況,您可以添加更多構造函數。

暫無
暫無

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

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