1

2 つのクラスからなる小さなプログラムを作成しました。2 番目のクラスからメソッドを呼び出そうとしていますが、エラーが発生します。

エラーは次のとおりです。

スレッド「メイン」の例外 java.lang.Error: 未解決のコンパイルの問題: メソッド getSum(int[]) は、タイプ UserInteraction に対して未定義です メソッド getAverage(int[]) は、タイプ UserInteraction に対して UserInteraction.main(UserInteraction で未定義です.java:66)

最初のクラスのコードは次のとおりです。

import java.util.Scanner;

public class UserInteraction {

    public static void main(String[] args) {

        Scanner scan = new Scanner(System.in);
        int choice = 0;
        String[] subjects = new String[10];
        int grades[] = new int[10];
        double sum = 0.0;
        Grades method = new Grades();

    do
    {
        System.out.println("1. Enter a course name and a grade");
        System.out.println("2. Display all grades");
        System.out.println("3. Calculate the average grade");
        System.out.println("4. Exit program");

        choice = scan.nextInt();

        if ( choice == 1 ) 
        {
            Scanner scansubjects = new Scanner(System.in);
            Scanner scangrades = new Scanner(System.in);

            System.out.println("Enter 10 subjects and their corresponding grades:");
            System.out.println();

            int i = 0;

            for( i = 0; i < 10; i++ )
            {
                System.out.println("Subject:");

                String temp = scansubjects.nextLine();
                subjects[i] = temp.toLowerCase();

                System.out.println("Grade:");

                grades[i] = scangrades.nextInt();

                if( i == ( subjects.length - 1 ) )
                {
                    System.out.println("Thank you!");
                    System.out.println();
                }
            }
        }


        if ( choice == 2 )
        {
            System.out.println("Subjects" + "\tGrades");
            System.out.println("---------------------");

            for(int p = 0; p < subjects.length; p++)
            {

                System.out.println(subjects[p] + "\t" + "\t" + grades[p]);
            }
        }

        if ( choice == 3 )
        {   
              System.out.println("Total of grades: " + getSum(grades));
              System.out.println("Count of grades: " + grades.length);
              System.out.println("Average of grades: " + getAverage(grades));
              System.out.println();
        }


    } while ( choice != 4);

    } 

 }

そして2番目のクラスは次のとおりです。

public class Grades {

    public static double getAverage(int[] array)
    {
        int sum = 0;
        for(int i : array) sum += i;
        return ( ( double ) sum )/array.length;
}

    public static double getSum(int[] array)
    {
        int sum = 0;
        for (int i : array) 
        {
         sum += i;
        }
        return sum;
    }

    }
4

3 に答える 3

1

静的メソッドしかないため、これは必要ありません。

Grades method = new Grades(); // <-- delete this line

静的メソッドを呼び出すには、次のようにクラス名を先頭に付ける必要があります。

System.out.println("Total of grades: " + Grades.getSum(grades));
System.out.println("Count of grades: " + grades.length);
System.out.println("Average of grades: " + Grades.getAverage(grades));
于 2012-11-04T15:23:07.453 に答える
0

あなたのコードはコンパイルされません。非コンパイル コードを実行しようとしないでください。コードを実行する前に、すべてのコンパイル エラーを修正します。それらは、Eclipse IDE の「問題」ビューに表示されます。

于 2012-11-04T15:22:05.050 に答える
0

Grades.getSum呼び出してGrades.getAverage正しい結果を得る必要があります。また、クラスの先頭でGradeコマンドを使用して、クラスをインポートすることを忘れないでください。import Grades;UserInteraction

于 2012-11-04T15:22:52.620 に答える