Java - 括号麻烦

时间:2012-10-01 15:45:52

标签: java brackets

放置支架时遇到一些麻烦。我想在我的main方法的范围内编写一些方法,但我总是最终得到一堆红线和错误告诉我“这条线上有多个标记      - 令牌“void”,@ expected上的语法错误      - 无法将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();     
    }

}

}

8 个答案:

答案 0 :(得分:7)

你不能在方法中声明方法..它不是关于括号..它是关于语法。

好的,Dean,我在这里再次描述一下......

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

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

  • 创建一个类Demo
  • 向该班级getUserInput()
  • 添加方法
  • 也为您的班级添加主要方法。
  • 有一个构造函数(0-arg)
  • 现在,您的程序从main()开始执行..如果您想接受用户输入..请从此处调用getUserInput()方法..作为第一个声明..
  • getUserInputMethod()中,在阅读完所有输入后,调用构造函数初始化instance variables ..

  • 在此之后,您的getUserInput()会将控件返回到您的main()方法..您可以从那里继续执行代码..

答案 1 :(得分: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();

         //...
    }
}

答案 2 :(得分: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();
    }

答案 3 :(得分:0)

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

答案 4 :(得分:0)

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

答案 5 :(得分:0)

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

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

答案 6 :(得分: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 ”必须定义为 static ,因为您将它们作为静态调用

答案 7 :(得分: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();
    }

}

}