Синтаксическая ошибка Eclipse на токене "}", удалите этот токен и синтаксическую ошибку, вставьте "}" для завершения ClassBody - PullRequest
0 голосов
/ 08 октября 2018

Я пытаюсь создать учебную программу для сотрудника книжного магазина, которая позволяет продавцу добавлять, удалять, редактировать и искать книги в своей базе данных.Я почти сделал всю программу, однако я застрял на 2 ошибки.Это всего 234 строки кода, поэтому я постараюсь сократить его до соответствующих частей, чтобы облегчить его тем, кто хочет мне помочь.Я использую Eclipse с JDE и JDK 10. Насколько мне известно, проект Eclipse был инициирован с использованием среды выполнения JavaSE-10.Ниже приведены 2 метода, вызывающие ошибки.

public class Bookstore {

    public static void main(String[] args) {
        try(
                //Creating table connection and statement
                Connection conn = DriverManager.getConnection("***********",
                        "****", "*********"); //Please note that I blocked out the actual connection information here

                Statement stmt = conn.createStatement();
                ){

            Scanner input = new Scanner(System.in);
            int selection = 0;

            //Menu for action selection and user input
            while(selection != 5) {
                System.out.println("Please enter the number corresponding to the action you would like to take:\n"
                        + "1. Enter book\n"
                        + "2. Update book\n"
                        + "3. Delete book\n"
                        + "4. Search books\n"
                        + "5. Exit");
                selection = input.nextInt();

                //Selection sorting
                if(selection == 1) {
                    //Collecting book information
                    System.out.println("Please enter the Title of the book you would like to put into the system: ");
                    String title = input.next();
                    System.out.println("Please enter the Author of said book: ");
                    String author = input.next();
                    System.out.println("Please enter the number of said book currently in stock: ");
                    int qty = input.nextInt();

                    //Sending info to the addBook method
                    addBook(title, author, qty, stmt);
                } else if(selection == 2) {
                    //Collecting book information
                    System.out.println("Please enter the id of the book you would like to update: ");
                    int id = input.nextInt();

                    //Sending info to the updateBook method
                    updateBook(id, stmt);
                } else if(selection == 3) {
                    //Collecting book information
                    System.out.print("Please enter the id of the book you would like to delete from the system: ");
                    int id = input.nextInt();

                    //Sending info to deleteBook method
                    deleteBook(id, stmt);
                } else if(selection == 4) {
                    searchStore(stmt);
                } else if(selection == 5) {
                    System.out.println("Goodbye");
                    input.close();
                } else { //Invalid entry handler
                    System.out.println("Sorry, that isn't a valid selection.");
                }
            }

        } catch(SQLException ex) {
            ex.printStackTrace();
        }
    }
} //This is the line giving me the error "Syntax error on token "}", delete this token"

Теперь я уже провел исследование относительно ошибки в нижней части этого блока кода.Насколько я могу судить, я не пропускаю ни одной скобки, и за пределами класса не создаются переменные или что-либо, что могло бы вызвать эту ошибку.Единственное другое решение, которое мне удалось найти, это то, что «Eclipse просто странный».

Моя вторая ошибка связана с этим блоком кода:

public static void resultSetPrinter(ResultSet rset) {
    while(rset.next()) {
        String title = rset.getString("Title");
        String author = rset.getString("Author");
        int qty = rset.getInt("qty");
        System.out.println("Title: " + title + "\nAuthor: " + author + "\nNumber in stock: " + qty + "\n\n");
    }
    if(rset == null) {
        System.out.println("No records for the entry could be found.");
    }
} //This is the line giving me the "Syntax error, insert "}" to complete ClassBody" error

Я также сделал несколькоисследование относительно ошибки в нижней части этого блока и когда я удаляю скобку в соответствии с запросом, ошибка просто переходит к методу до этого.Я не включил остальные 4 метода в класс, чтобы попытаться уменьшить головную боль при прохождении всего этого кода, поскольку они не дают мне ошибок.Любая помощь будет принята с благодарностью, я в полном недоумении.

1 Ответ

0 голосов
/ 09 октября 2018

В основном благодаря Эллиотту Фришу я нашел свой ответ.По сути, мне нужно было поместить все мои методы в мой основной класс по имени Bookstore.Я переместил } в конец моей программы и добавил операторы try catch для каждого метода.Например, я изменил последний блок кода, который вставил в свой вопрос, на:

public static void resultSetPrinter(ResultSet rset) {
    try {
        if(rset.next()) {
            while(rset.next()) {
                String title = rset.getString("Title");
                String author = rset.getString("Author");
                int qty = rset.getInt("Qty");
                System.out.println("Title: " + title + "\nAuthor: " + author + "\nNumber in stock: " + qty + "\n");
            }
        } else {
            System.out.println("No records for the entry could be found.\n");
        }
    } catch(SQLException ex) {
        ex.printStackTrace();
    }
}

. Вы также заметите, что я добавил оператор if else, чтобы проверить, был ли ResultSet rset пустым, если он не былЯ поступил как обычно, и если это было, я напечатал простое сообщение, чтобы сообщить пользователю, что ничего не найдено.

Спасибо вам, Эллиотт Фриш и Marco13 за помощь.

...