2012-10-01 80 views
1

我在放置括號時遇到了一些麻煩。我想在我的主要方法的範圍內編寫幾個方法,但最終總會出現一堆紅線和錯誤,告訴我「此行有多個標記 - 令牌的語法錯誤」void「,@預計爲 - addVehicleBooking不能解析爲類型「Java - 括號內的問題

我不希望我的方法返回任何東西,我只是希望他們執行一些代碼並在屏幕上打印一些東西。

編輯:

這是代碼的開始,沒有必要擔心未使用的變量和這樣的。感謝大家的幫助=]。

import java.util.Scanner; 

public class FerryMenu { 

public static void main(String[] args) 
{ 
    Scanner input = new Scanner(System.in); 
    Scanner scan = new Scanner(System.in); 

    public static void addVehicleBooking() 
    { 
     String booking_ID = ""; 
     System.out.print("Enter your booking ID"); 
     booking_ID = input.next(); 
     String registration = ""; 
     System.out.print("Enter registration number"); 
     registration = input.next(); 
     String make_model = ""; 
     System.out.print("Enter vehicle make/model"); 
     make_model = input.next(); 
     int number_passengers = 1; 
     System.out.print("Enter number of passengers"); 
     number_passengers = scan.nextInt(); 
    } 

    String menu_choice = ""; 
    while(!"X".equals(menu_choice)){ 
     System.out.println("*** Ferry Ticketing System Menu ***"); 
     System.out.println("A - Add Vehicle Booking"); 
     System.out.println("B - Display Booking Info"); 
     System.out.println("C - Update Insurance Status"); 
     System.out.println("D - Display Booking Summary"); 
     System.out.println("X - Exit"); 

     System.out.print("Enter your selection: "); 
     menu_choice = input.next();  
    } 

} 

}

回答

7

你不能在方法中聲明方法..它不是關於括號的。它是關於語法的。

好了,院長,在這裏我再次介紹吧..

第一件事,throw away你已經寫了..讓我們開始新的代碼..

按照以下步驟實現你的問題: -

  • 創建一個類說Demo
  • 添加方法的那類,getUserInput()
  • 將主要方法也添加到您的班級。
  • 有一個構造函數(0-ARG)
  • 現在,你的程序開始從main()執行。如果你想利用用戶輸入..從這裏..作爲第一個語句中調用getUserInput()方法..
  • 在你getUserInputMethod(),閱讀完所有的輸入之後,調用構造函數初始化你instance variables ..

  • 在這之後,你的getUserInput()將控制權交還給你main()方法。您可以與您的代碼從那裏出發..

+0

這就是它,謝謝 – Dean

+0

@Dean ..不客氣.. –

+0

不僅如此,addVehicleBooking永遠不會被使用,所以我們不能猜測他需要用他的「內部」方法做什麼 – TecHunter

3

你無法定義的方法中的方法。在方法之外並在類中聲明它。

public class FerryMenu { 

    public static void addVehicleBooking() 
    { 
     //... 
    } 

    public static void main(String[] args) 
    { 
     Scanner input = new Scanner(System.in); 
     Scanner scan = new Scanner(System.in); 

     // just call the method here 
     addVehicleBooking(); 

     //... 
    } 
} 
+0

你不能定義一個方法..不是你可以..:P – PermGenError

+0

@ chaitanya10:哎呀! :o ...修復它。謝謝。 –

0

您正在您的主要方法中寫入您的addvehicalBooking方法。因此,那些紅線:從main中移除該方法。

public static void main(String[] args) 
{ 
    Scanner input = new Scanner(System.in); 
    Scanner scan = new Scanner(System.in); 
} 
    public static void addVehicleBooking() 
    { 
     String booking_ID = ""; 
     System.out.print("Enter your booking ID"); 
     booking_ID = input.next(); 
     String registration = ""; 
     System.out.print("Enter registration number"); 
     registration = input.next(); 
     String make_model = ""; 
     System.out.print("Enter vehicle make/model"); 
     make_model = input.next(); 
     int number_passengers = 1; 
     System.out.print("Enter number of passengers"); 
     number_passengers = scan.nextInt(); 
    } 
0

嘗試取出addVehicleBooking()主,並調用它,並聲明變量之外的構造

0

你有你的主靜態方法這可能是造成問題裏面的靜態方法。您是否嘗試將addVehicleBooking()方法移動到公共類FerryMenu和主要方法之間的空間?(addVehicleBooking()方法應該是類FerryMenu的成員,而不是主要方法)

0

爲什麼要在public static void main中進行靜態方法。我不認爲有必要製作它。

從「static void addVehicleBooking」中刪除單詞static。 我將編輯此答案並儘快添加更正的代碼。

0

您不能在方法中定義方法。 您可以在類中定義它是這樣的:

import java.util.Scanner; 

public class FerryMenu { 

static Scanner input = new Scanner(System.in); 
static Scanner scan = new Scanner(System.in); 

public static void addVehicleBooking() 
{ 
    String booking_ID = ""; 
    System.out.print("Enter your booking ID"); 
    booking_ID = input.next(); 
    String registration = ""; 
    System.out.print("Enter registration number"); 
    registration = input.next(); 
    String make_model = ""; 
    System.out.print("Enter vehicle make/model"); 
    make_model = input.next(); 
    int number_passengers = 1; 
    System.out.print("Enter number of passengers"); 
    number_passengers = scan.nextInt(); 
} 

public static void main(String[] args) 
{ 


    String menu_choice = ""; 
    while(!"X".equals(menu_choice)){ 
     System.out.println("*** Ferry Ticketing System Menu ***"); 
     System.out.println("A - Add Vehicle Booking"); 
     System.out.println("B - Display Booking Info"); 
     System.out.println("C - Update Insurance Status"); 
     System.out.println("D - Display Booking Summary"); 
     System.out.println("X - Exit"); 

     System.out.print("Enter your selection: "); 
     menu_choice = input.next();  
    } 
} 
} 

和領域「輸入」和「掃描」必須被定義爲靜態因爲你調用它們的靜態

0

addVehicleBooking應放置在main之外。順便說一句:我希望你使用的地方變量用戶的輸入,因爲在發佈的代碼是未使用的。

的重構的代碼應該是這樣的:

import java.util.Scanner; 

public class FerryMenu { 
public static void main(String[] args) { 
    addVehicleBooking(); 

} 

public static void addVehicleBooking() { 
    String menu_choice = ""; 
    Scanner input = new Scanner(System.in); 
    Scanner scan = new Scanner(System.in); 

    String booking_ID = ""; 
    System.out.print("Enter your booking ID"); 
    booking_ID = input.next(); 
    String registration = ""; 
    System.out.print("Enter registration number"); 
    registration = input.next(); 
    String make_model = ""; 
    System.out.print("Enter vehicle make/model"); 
    make_model = input.next(); 
    int number_passengers = 1; 
    System.out.print("Enter number of passengers"); 
    number_passengers = scan.nextInt(); 

    while (!"X".equals(menu_choice)) { 
     System.out.println("*** Ferry Ticketing System Menu ***"); 
     System.out.println("A - Add Vehicle Booking"); 
     System.out.println("B - Display Booking Info"); 
     System.out.println("C - Update Insurance Status"); 
     System.out.println("D - Display Booking Summary"); 
     System.out.println("X - Exit"); 
     System.out.print("Enter your selection: "); 
     menu_choice = input.next(); 
    } 

} 

}