2017-12-04 3 views
0

Ich bin ein beginnender Programmierer und wir wurden beauftragt, Methoden in einen Code zu implementieren. Ich hatte diesen Grad-Durchschnitt-Code gut funktioniert, aber sobald ich es in Methoden aufgab, konnte ich die Rückkehrfunktionen nicht zum Funktionieren bringen. Ich habe versucht, Klammern zu bewegen und den Code neu zu ordnen, aber ohne Erfolg. Ich glaube, es kann mit dem Rahmen meiner Variablen ... Vielen Dank im Voraus zu tun haben :)Zurückgeben/Übergeben von Variablen in Java

package milsteadgrades; 
import java.util.Scanner; 

public class MilsteadGrades { 


public static void main(String[] args) 

{ 
//Call methods to execute program. 
displayInfo(); 
double numOfgrades = getInput(); 
double average = getAverage(numOfgrades); 
char letgrade = determineLetterGrade(average); 
displayGrades(average, letgrade); 
} 


public static void displayInfo() 

{ 
System.out.println("Mallory Milstead"); 
System.out.println("This program will prompt the user for a number of 
grades" 
+ " and each grade. Then the program calculates and displays the average and 
letter"+" grade."); 
} 

public static double getInput() 

{ 
//Prompt user to enter number of grades and assign that number to 
numOfgrades. 
System.out.print("How many grades would you like to average? "); 
Scanner keyboard = new Scanner(System.in); 
double numOfgrades = keyboard.nextDouble(); 
return numOfgrades; 
} 

public static double getAverage(numOfgrades) 

{ 
//Prompt the user to enter grades. 
System.out.println("Enter exam scores : "); 
Scanner keyboard = new Scanner(System.in); 
double total = 0; 
for (double i = 0; i < numOfgrades; i++) { 
double grade = keyboard.nextDouble(); 
total+=grade;} 
double average = total/numOfgrades; 
return average; 
} 

public static char determineLetterGrade(average) 

{ double testscore = average; 
    char letgrade; 

    if (testscore >= 90) 
    { 
     letgrade = 'A'; 
    } else if (testscore >= 80) 
    { 
     letgrade = 'B'; 
    } else if (testscore >= 70) 
    { 
     letgrade = 'C'; 
    } else if (testscore >= 60) 
    { 
     letgrade = 'D'; 
    } else 
    { 
     letgrade = 'F'; 
    } 
    return letgrade; 
    } 

public static void displayGrades(average, letgrade) 

{ 
System.out.println("The average of the grades is "+average+ " and the 
letter grade"+ " is " + letgrade+".");} 

} 

Beginnend mit der Linie -public statischen Doppel getAverage (numOfgrades) -, bekomme ich ständig „nicht Symbol finden können“ Fehlermeldung. Keine meiner Variablen wird erkannt.

+4

Mögliches Duplikat von [Was bedeutet ein Kompilierfehler "Kann nicht finden"?] (Https://stackoverflow.com/questions/25706216/what-does-a-cannot-find-symbol-compilation-error-mean) –

+0

Java ist keine modulare Sprache. Es ist eine OBJECT-Sprache. Schwer zu sagen über eleganten oder qualitativ hochwertigen Java-Code während der Programmierung auf statischen Methoden (de facto verletzt OP Sinn) –

+0

Ja, ich bin neu und das war ein wenig verwirrt. Ich hätte stattdessen Implementierungsmethoden sagen sollen. Danke für die Köpfe hoch. – mal0689

Antwort

1

Sie müssen den Typ des Arguments getAverage deklarieren. Wie

public static double getAverage(double numOfgrades)

Similiarly für Ihre anderen Methoden (nicht-Module). Lesen Sie this oder this für Tipps.

+0

Karl Reid ... Vielen Dank. Ich wusste, dass es etwas Einfaches war. Ich tat das und es lief wie ein Zauber das erste Mal. Du hast mir eine Menge Ärger und Zeit gespart. Die besten Wünsche :) – mal0689