1

我写了一个由两个类组成的小程序。我正在尝试从第二类调用方法,但出现错误。

错误是:

线程“主”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);

    } 

 }

第二类是:

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.getSumGrades.getAverage获得正确的结果。另外,不要忘记使用类开头的Grade命令导入类。import Grades;UserInteraction

于 2012-11-04T15:22:52.620 回答