2014-09-29 3 views
-3

Хорошо, поэтому я пытаюсь получить свой код, чтобы дать мне тип возврата, но он продолжает давать мне ошибку. Вот мой код.Код ошибки при компиляции в Java

import java.util.Scanner; 

public class Gradebookmodified { 
     public static void main(String[] args){ 
      mainMenu(); 
      mainInstructions(); 
      mainGrades(); 
      average(); 
     } 

     public static void mainMenu(){ 
      Scanner input = new Scanner(System.in); 
      System.out.print("Choose an option: \n1.Average grades for a new student \n2.Quit \n"); 
      int selection; 
      selection = input.nextInt(); 
      if(selection == 1){ 
       System.out.println("Enter name of new student"); 
       String name = input.next(); 
      }else { 
      } 
     } 

     public static void mainInstructions(){ 
      Scanner input = new Scanner(System.in); 
      System.out.println("Grades will be entered in this order: \n1. Homework \n2. Quizzes \n3. Tests"); 
     } 

     public static void mainGrades(){ 
      Scanner input= new Scanner(System.in); 

      double[] homework = new double[5]; 
      for(int i = 0; i < homework.length; i++){ 
       System.out.println("Enter homework grades."); 
       homework[i] = input.nextDouble(); 
      } 

      double[] quizzes = new double[4]; 
      for(int j = 0; j <quizzes.length; j++){ 
       System.out.println("Enter quiz grades."); 
       quizzes[j] = input.nextDouble(); 
      } 

      double[] tests = new double[4]; 
      for(int k = 0; k <tests.length; k++){ 
       System.out.println("Enter test grades."); 
       tests[k] = input.nextDouble(); 
      } 
     } 

     public static double average(double homework, int i){ 
      Scanner input = new Scanner(System.in); 
      double result = 0.0; 
      if (homework > 0){ 
       result = i/homework; 
      } 
      return result; 
     } 
} 

Это ошибка, которую компилятор мне дает.

Gradebookmodified.java:16: error: method average in class Gradebookmodified cannot be applied to given types; 
     average(); 
     ^
required: double,int 
found: no arguments 
reason: actual and formal argument lists differ in length 
1 error 

Я не уверен, почему он продолжает давать мне эту ошибку, но если кто-нибудь скажет мне, что я делаю неправильно, это было бы фантастически.

+0

средний(); принимает два параметра, к которым вы не переходите. средний (double, int); – Bauss

+0

В вашем 'main()' методе вы вызываете 'average()', но вы определяете 'average (double, int)'. И все оценки являются локальными для 'mainGrade()'. –

+0

Вы можете сделать одно задание. Запишите каждую переменную (которая используется в более поздних функциях) в ваших статических функциях как static.And просто вызовите среднюю функцию. Также измените определение функции для среднего значения() { // функция здесь идет } – nikhil

ответ

2

вы использовали average(); в основном методе

но средняя функция подпись

average(double homework, int i) 

Примечания: Как вы видите ваше использование средней функции в основном методе не согласны с функцией подпись.

+0

Ok. Итак, как я могу это исправить? Я не могу понять, как получить среднее из каждых 3 категорий, которые у меня есть (домашняя работа, викторины, тесты). Я сейчас в растерянности. –

+0

Не волнуйся. просто вы могли бы объяснить больше, что ваша проблема? –

+0

Хорошо, эта программа должна получать среднее значение для каждой из групп, перечисленных в коде (домашняя работа, викторины, тесты).В конце кода мы должны дать окончательное среднее значение всех оценок. Это все должно быть сделано с использованием нескольких методов. Я попытался запустить свой код без average(); в моем основном методе. Он работает, но он пропускает мой средний метод в нижней части моего кода, что также является проблемой. Код также допускает использование массивов, и я не уверен, как усреднять пользовательские входы из массивов. Это то, чему я еще не научился в классе, и это остановило меня. –

0

Вы объявили ваш средний метод как

public static double average(double homework, int i) 

Итак, когда вы называете его, вы должны пройти двойной и в Int аргумент этого метода.

Ошибка в том, что в коде вы вызываете его без каких-либо параметров. average();

Вы должны называть это как , например.

double homework = 2.3; // some value 
int i = 1; // some value 
average(homework, i); 
0

Вы должны передать 3 параметра, когда вы вызываете метод «средний()». Когда вы вызываете «average()», я не вижу, что вы не передали какой-либо параметр. Вот почему компилятор не может скомпилировать код.

Число параметров метода должно соответствовать числу аргументов метода. В противном случае компилятор не сможет скомпилировать код.

При вызове метода "средняя()", вы должны пройти три параметра следующим образом,

среднем (5,5, 5);

Используя выше код и попытаться продолжить остальную часть ваших работ

удачи !!!!!

Смежные вопросы