簡體   English   中英

如何將變量從一種方法傳遞到另一種方法?

[英]How to pass variables from one method to another?

試圖編寫一個成績計算器程序,並在將返回變量從一種方法傳遞到另一種方法時遇到問題。 我是編碼新手,所以我敢肯定這不是很漂亮,但希望能得到一些幫助。 我有一個計算作業分數的方法,一個計算期中分數的方法,一個計算期末分數的方法。 我試圖在最后一種方法中調用返回變量來計算總成績。 錯誤是在調用 courseScore 方法時,顯示為:GradeCalc 類型中的方法 courseScore(int, int, int) 不適用於 arguments()。 任何幫助表示贊賞!

import java.util.*;
public class GradeCalc {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int overAll;
        int midtermScore;
        int finalsScore;
        hwpoints();
        midTerm();
        courseScore();  

}

        public static int hwpoints() {
            int x;
            int hwTotal = 0;
            int pointsPossible = 0;
            Scanner input = new Scanner(System.in);
            System.out.println("Enter number of assignments:");
            x = input.nextInt();
                for(int i = 1; i <= x; i++) {
                    System.out.println("Enter assignment score:");
                    int hwScore = input.nextInt();
                    hwTotal += hwScore;
                    System.out.println("Enter total possible points:");
                    int points = input.nextInt();
                            pointsPossible += points;
                        }
                int overAll = (hwTotal / x);
                System.out.println("You got " + hwTotal + " out of " + pointsPossible + ". Your overall Homework grade is a: " + overAll);
                return overAll;
        }
        public static int midTerm() {
            int midtermPoints;
            int midtermPossible;
            int midtermScore;
            Scanner input = new Scanner(System.in);
            System.out.println("Enter Midterm Score:");
            midtermPoints = input.nextInt();
            System.out.println("Enter total possible Midterm Points:");
            midtermPossible = input.nextInt();
            midtermScore = (midtermPoints / midtermPossible);
            System.out.println("Your Midterm score is " + midtermScore);
            return midtermScore;

        }
        public static int finalScore() {
            int finalsPoints;
            int finalsPossible;
            int finalsScore;
            Scanner input = new Scanner(System.in);
            System.out.println("Enter Finals Score:");
            finalsPoints = input.nextInt();
            System.out.println("Enter total possible Finals Points:");
            finalsPossible = input.nextInt();
            finalsScore = (finalsPoints / finalsPossible);
            System.out.println("Your Finals score is " + finalsScore);
            return finalsScore;
    }
        public static void courseScore(int finalsScore, int midtermScore, int overAll) {
            Scanner input = new Scanner(System.in);
            System.out.println("What percent of your grade is the final?");
            int testWeight = input.nextInt();
            System.out.println("What percent of your grade is the midterm?");
            int midtermWeight = input.nextInt();
            System.out.println("What percent of your grade is the homework?");
            int hwWeight = input.nextInt();

            int testWeighted = (finalsScore * (testWeight / 100));
            int midtermWeighted = (midtermScore * (midtermWeight / 100));
            int hwWeighted = (overAll * (hwWeight / 100));
            int courseScore = ((hwWeighted + midtermWeighted + testWeighted) * 100);
            System.out.println("Your total course grade is " + courseScore);
        }

}

方法hwpointsmidTermfinalScore都返回一個你沒有保留的 int 值

你需要做一些事情,比如

int hwp = hwpoints ();
int mt = midterm ();
int fs = finalScoare ();

然后你可以將這些變量傳遞給courseScore作為

courseScore (fs, mt, hwp);

筆記

在這段代碼中

int testWeighted = (finalsScore * (testWeight / 100));

您將進行 integer 部門。
請參閱Int 除法:為什么 1/3 == 0 的結果?

首先要了解 class 和 static 方法的概念。

  • 類有字段和方法。

    • 字段(變量)保存方法可以操作的數據(狀態)
    • class 的每個實例對這些字段都有自己的值
    • 方法對字段進行操作
    • 方法可以包括調用參數
    • 方法也可以返回一個值
  • Static 實例(類、字段和方法)是單例

    • 它們只有一個副本(class 的所有實例共享同一個)
    • Static 方法無法訪問(非靜態)字段/方法

使用它,考慮創建另一個 class,它具有您的 GradeCalc class 的(大部分)內容,並從中刪除靜態並在 GradeCalc 中創建該 class 的實例。 這樣 class 中的每個方法都可以訪問您定義的字段。

這是一個基於您已經編寫的概念的示例。 注意:您的代碼有其他結構/實現問題,我永遠不會如圖所示實現它; 但是,我不想把它變成 Java 課程; 因此,我試圖向您展示一些可以在您所寫內容的范圍內起作用的東西。

public class GradeCalc {
  public static void main(String[] args) {
      Scanner scanner = new Scanner(System.in);
  Calculator calc = new Calculator (calc);
  calc.hwpoints();
  calc.midTerm();
  calc.courseScore();
  int overAll = calc.OverAll;
  int midtermScore = calc.MidtermScore;;
  int overAll = calc.OverAll;
}
public class Calculator {
  public void OverAll;
  public void MidtermScore;
  public void FinalsScore;

  public void hwpoints()
  {
    ...
    OverAll = overAll
  }
  //Do the same for the methods below
  //public void midTerm();
  //public void courseScore();  
}

暫無
暫無

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

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