1

我在放置括号时遇到了一些麻烦。我想在我的主要方法范围内编写一些方法,但我总是以一堆红线和错误告终,告诉我“这一行有多个标记 - 令牌“void”上的语法错误,@预期 - addVehicleBooking无法解析为类型”

我不希望我的方法返回任何东西,我只想让它们执行一些代码并在屏幕上打印一些东西。

编辑:

这是代码的开始,无需担心未使用的变量等。感谢大家的帮助=]。

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();     
    }

}

}

4

8 回答 8

7

您不能在方法中声明方法。这与括号无关。它与语法有关。

好的,Dean,在这里我将再次描述它..

首先throw away,您编写的代码.. 让我们重新开始..

请按照以下步骤解决您的问题:-

  • 创建一个类说Demo
  • 向该类添加一个方法,getUserInput()
  • 将 main 方法也添加到您的类中。
  • 有一个构造函数(0-arg)
  • 现在,您的程序从main().. 开始执行。如果您想接受用户输入..getUserInput()从这里调用您的方法.. 作为第一条语句..
  • 在您的getUserInputMethod(). 中,读取所有输入后,调用您的构造函数来初始化您的instance variables..

  • 在此之后,您getUserInput()将控制权返回给您的main()方法..您可以从那里继续您的代码..

于 2012-10-01T15:47:53.033 回答
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();

         //...
    }
}
于 2012-10-01T15:47:22.653 回答
0

您正在 main 方法中编写 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();
    }
于 2012-10-01T15:47:46.053 回答
0

尝试取出addVehicleBooking() main 并调用它并在构造函数中声明变量

于 2012-10-01T15:49:22.263 回答
0

您的主要静态方法中有一个静态方法,这可能会导致问题。您是否尝试过将 addVehicleBooking() 方法移动到公共类 FerryMenu 和 main 方法之间的空间?(addVehicleBooking() 方法应该是 FerryMenu 类的成员,而不是 main 方法)

于 2012-10-01T15:49:26.153 回答
0

为什么要在 public static void main 中创建一个静态方法。我不认为有必要做到这一点。

从“static void addVehicleBooking”中删除静态一词。我将编辑此答案并尽快添加更正的代码。

于 2012-10-01T15:49:49.423 回答
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();     
    }
}
}

并且字段“ input ”和“ scan ”必须定义为静态,因为您将它们调用为静态

于 2012-10-01T15:53:56.117 回答
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();
    }

}

}
于 2012-10-01T15:56:54.360 回答