2012-11-19 14 views
6

Celem tego programu jest wprowadzenie przez użytkownika trzech wyników egzaminu, a ich średnia i ocena listowa zostaną im zwrócone.Wyjaśnienie przełącznika Java <identifier> wydanie

Jak to jest obecnie napisany daje mi błąd na „public static String getLetterGrade ..” linię i nie wiem, dlaczego tak jest ..

public class GradeProblem 
{ 
public static void main(String[] args) 
{ 
char letterGrade; 
String exam1, exam2, exam3; 
double exam1Score, exam2Score, exam3Score, average; 

exam1 = JOptionPane.showInputDialog(null, "Enter your score for Exam 1: "); 
exam1Score = Double.parseDouble(exam1.substring(0,2)); 
int intExam1Score = (int)exam1Score; 

exam2 = JOptionPane.showInputDialog(null, "Enter your score for Exam 2: "); 
exam2Score = Double.parseDouble(exam2.substring(0,2)); 
int intExam2Score = (int)exam2Score; 

exam3 = JOptionPane.showInputDialog(null, "Enter your score for Exam 3: "); 
exam3Score = Double.parseDouble(exam3.substring(0,2)); 
int intExam3Score = (int)exam3Score; 

average = (intExam1Score + intExam2Score + intExam3Score)/3; 

int intAvergage = (int)average; 
letterGrade = getLetterGrade(intAverage); 

System.out.println("Your average is "+average); 
System.out.println("Your letter grade is "+letterGrade); 

} 

private static String getLetterGrade(average) 
{ 
String letterGrade; 
switch(intAverage/10) 
{ 
    case 10: letterGrade = "A"; 
    case 9: letterGrade = "A"; 
       break; 
    case 8: letterGrade = "B"; 
       break; 
    case 7: letterGrade = "C"; 
       break; 
    case 6: letterGrade = "D"; 
    default: 
       letterGrade = "E"; 
} 
return letterGrade; 

    } 
+0

Brakuje typ danych dla parametru "średnia" –

Odpowiedz

3

Powinno być

private static String getLetterGrade(int average){ 

lub z dowolnego typu danych, a masz na myśli inny non istnieje zmienna w instrukcji switch intAverage

0

Twój zapomniał umieścić typ zmiennej i średniej w metodzie getLetterGrade. Popraw również to switch(intAverage/10) do switch(average/10).

0
private static String getLetterGrade(int average) 

zapomniałeś wpisać typ zmiennej average, musi być typu int zakładam.

Przełącznik (intAverage/10) należy zmienić, aby przełączyć (średnia/10).

Widzę również pewne problemy z wyborem int intryguje z dokładnością, chyba że jest to coś, co chcesz zignorować. Używałbym instrukcji if i zakresu dla przypadków przełączania, a nie tylko rzutowania wszystkich na ints. Może to robi różnicę, może nie, ale wszystkie rzucanie i utrata dokładności sprawiają, że czuję, że kod jest niekompletny.

+0

średnia to int, a nie ciąg. – Maroun

0

Parametr average nie ma typu. Powinno być:

private static String getLetterGrade(int average) { 

, aby dopasować typ zmiennej, którą do niej podajesz.

+0

Nigdy nie używa tej zmiennej. Sądzę, że musi użyć 'average' wewnątrz instrukcji' switch'. – Maroun