簡體   English   中英

來自主 class 的輸入無法在另一個 class 中訪問,只會顯示初始化值

[英]The input from main class can't be accessed in the another class and would only display the initialized value

我需要訪問主要 class 的輸入,並將它們應用到部門 class,但是,它不允許我。 另外,我不允許使用參數。 我需要遵循這個 UML 圖。 請指導我如何解決這個問題。 我們的主題是關於 inheritance、static 變量和方法、方法覆蓋和 super 關鍵字。

在此處輸入圖像描述

public class Department {
    private int groupScore;
    private double groupAverage;
    private static int overallScore;
    private static double overallAverage;
    
    public Department(){
        int a = 0; 
        int b = 0; 
        int c = 0; 
        int d = 0; 
        int e = 0;
        
        int gscore = groupScore;
        gscore = a + b + c + d + e;
        
        int oascore = overallScore;
        oascore = overallScore + groupScore;
        
        overallAverage = overallAverage/10.0;
        
        groupAverage = groupScore/5.0;
    }
    public double getGroupAverage() {
        return groupAverage;
    }
    public static void displayAverage() {
        double oave = overallAverage;
        System.out.println("Overall Average: " + oave);
    }
}

import java.util.Scanner;
public class Main {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        Department objdept = new Department();
        
        System.out.println("Enter 5 rates for Department A (1-5)");
        int a = sc.nextInt();
        int b = sc.nextInt();
        int c = sc.nextInt();
        int d = sc.nextInt();
        int e = sc.nextInt();
        System.out.println("Department 1 group average: " + objdept.getGroupAverage());
        objdept.getGroupAverage();
        objdept.displayAverage();
        System.out.println();
        System.out.println("Enter 5 rates for Department B (1-5)");
        int f = sc.nextInt();
        int g = sc.nextInt();
        int h = sc.nextInt();
        int i = sc.nextInt();
        int j = sc.nextInt();
        objdept.getGroupAverage();
        System.out.println("Department 2 group average: "+ objdept.getGroupAverage());
        System.out.println();
        Department.displayAverage();
    }
}

如果您不允許在基於圖表的構造函數中使用 arguments。 您可以將掃描器代碼添加到 Department 構造函數中。 然后主要創建兩個不同的部門對象。

public Department(){
    Scanner sc = new Scanner(System.in);
    int a = sc.nextInt();
    int b = sc.nextInt();
    // c,d,e etc...
    groupScore = a + b + c + d + e;
    groupAverage = groupScore / 5.0;

    overallScore = overallScore + groupScore;

    if (overallAverage == 0.0) {
        overallAverage = groupAverage;
    } else {
        overallAverage = (groupAverage + overallAverage) / 2.0;
    }
}

public class Main {
    public static void main(String[] args) {
        System.out.println("Enter 5 rates for Department 1 (1-5)");
        Department department1 = new Department();
        System.out.println("Department 1 group average: " + department1.getGroupAverage());
        Department.displayAverage();
        System.out.println();

        System.out.println("Enter 5 rates for Department 2 (1-5)");
        Department department2 = new Department();
        System.out.println("Department 2 group average: " + department2.getGroupAverage());
        Department.displayAverage();
    }
}

如果允許 arguments ,則需要在創建 object 時將變量傳遞到 Department 構造函數中。首先創建一個構造函數,它接受 5 個 integer 值

public Department(int a, int b, int c, int d, int e){
    groupScore = a + b + c + d + e;
    groupAverage = (a + b + c + d + e) / 5;
}

其次將值傳遞給 main 方法中的構造函數。 像這樣

int a = sc.nextInt();
int b = sc.nextInt();
int c = sc.nextInt();
int d = sc.nextInt();
int e = sc.nextInt();
Department objdept = new Department(a,b,c,d,e);

暫無
暫無

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

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