2013-10-05 103 views
0

我不斷收到一個編譯器錯誤,指出標識符預期在代碼所在的位置public static String Mainmenu(menu);.我是編程新手,所以我知道這可能很簡單。代碼使用的方法,當所有編譯正確時,它應該作爲平均等級程序運行。標識符預期java

import java.util.Scanner; 

public class Homework4 { 

public static void main(String[] args) 
{ 
    Scanner input = new Scanner(System.in); 
    int choice; 
    String name; 
    String menu1; 
    double homeworkAverage = 0.0; 
    double quizAverage = 0.0; 
    double testAverage = 0.0; 
    double average = 0.0; 
    double totalAverage = 0.0; 

    do{ 

     menu1 = Mainmenu; 

     choice = input.nextInt(); 

     if(choice == 1) 
     { 

      System.out.println("Eneter the student's name:"); 

       name = input.next(); 

      System.out.println("Enter homework grades"); 

       homeworkAverage = mean(); 

      System.out.println("Enter Quiz Grades"); 

       quizAverage = mean(); 

      System.out.println("Enter Test Grades"); 

       testAverage = mean(); 

      totalAverage = 0.25*homeworkAverage + 0.25*quizAverage +0.5*testAverage; 

      System.out.println("The average for " + name + " is: " + totalAverage); 

      } 
      else if (choice == 2) 
      { 
       System.out.println("Now quiting..."); 
      } 
      else 
      { 
       System.out.println("Invalid Choice"); 
      } 


    }while(choice != 2); 
} 


public static String Mainmenu (menu); 
{ 

    Scanner input = new Scanner(System.in); 

    String menu; 


     System.out.println("Welcome to Grader 1.0"); 
     System.out.println("1. Average a New Student"); 
     System.out.println("2. Quit"); 
     System.out.println("Please Enter Your Choice:"); 


     return menu; 

} 



public static double mean(double average); 
{ 

Scanner input = new Scanner(System.in); 

double grade = 0.0; 
double average = 0.0; 
double gradeTotal = 0.0; 
int numberOfGrades = 0; 

while(grade != -1) 
{ 

    System.out.println("Please enter the next grade or -1 when finished: "); 
    grade = input.nextDouble(); 

    if(grade != -1) 
    { 
     gradeTotal = gradeTotal + grade; 
     numberOfGrades++; 
    } 

} 
    if(numberOfGrades > 0) 
     { 

     average = gradeTotal/numberOfGrades; 

     } 
     else 
     { 
      System.out.println("No grades, no average"); 
     } 

      return average; 


} 
} 
+0

只是一個提示:切勿啓動大寫字母像'MAINMENU(...)'方法名,總是以小寫字母開始,隨後以大寫字母開頭的單詞,'mainMenu(menu),..'。這不是一個規則,也沒有發生任何錯誤,但它是標準的。 – Azad

回答

3

取出;public static String Mainmenu (menu);

同爲;操作後public static double mean(double average);

的問題是你要定義方法,而;的操作裝置聲明的結束。而且由於您在方法簽名之後終止,所以這些方法不會與body block一起提供。

注意自己獲准方法體後添加;但不是方法簽名和身體之間。例如,

public void myMethod() { 
    //body 
}; 
0

//您好,我的意見是,你應該用控制開關調用特定方法來更好地構造主要結構。例如:

import java.util.Scanner;

公共類Homework4 {

public static void main(String[] args) { 
    int menu = 0; //initial menu selection 
    int menuChoice = 0; //user menu selection 
    double meanValue = 0; //Mean value 

    menuChoice = MainMenu(menu); //user return menu choice    
    switch (menuChoice) { 
     case 1: FindMean(meanValue); 
      break; 
     case 2: Exit(); 
       break; 
     default: errorMsg(); 
      break; 
    }  
} 



//MminMenu 
public static int MainMenu(int menu){ 
    System.out.println("Welcome to Grader 1.0"); 
      System.out.println("1. Average a New Student"); 
      System.out.println("2. Quit"); 
    System.out.print("Select: "); 

    //user selection 
    @SuppressWarnings("resource") 
    Scanner input = new Scanner(System.in); 
    menu = input.nextInt(); 

    return menu;  
} 


//FindMean 
public static final void FindMean(double mean) { 
    //write method for FindMean 

} 

    //Exit 
public static final void Exit() { 
    //write method for Exit 

} 



// Error 
public static final void errorMsg() { 
    System.out.println("Something went wrong!"); 
} 

}

+0

對不起,縮進不好xD – Mitch