Проблемы кодирования проекта Java бензоколонки - PullRequest
0 голосов
/ 28 сентября 2018

Я новичок в кодировании Java.Только что начал онлайн-класс менее 4 недель назад.В настоящее время я работаю над проектом, в котором мне нужно

пройти логическое решение, чтобы определить потребности клиента.Смоделируйте заправочную станцию, которая имеет 4 станции ...

После объединения того, что я знаю до сих пор, я придумал код ниже.В нем есть некоторые желтые ошибки, и когда я запускаю в Eclipse, я получаю только распечатку:

welcome to gas station, choose station number 1, 2 or 3. 

Могу ли я получить некоторую помощь, что делать отсюда, пожалуйста?

public static void main(String[] args) {

    int stations;
    keyboard2 = new Scanner(System.in);

    System.out.print("Welcome to Gas Station \n");
    System.out.println("Choose Station Number: \n");
    System.out.println("1, 2, or 3 \n");

    stations = keyboard2.nextInt(2);

    switch (stations) {
        case 1:
            System.out.println("You entered Station 1.");
            break;

        case 2:
            System.out.println("You entered Station 2.");
            break;

        case 3:
            System.out.println("You entered Station 3.");
            break;

        default:
            System.out.println("Error: Invalid Number");
    }
}

private Scanner keyboard;

{

    System.out.print("Choose your fuel type:\n");
    System.out.println("Press 1 for Unleaded\n");
    System.out.println("Press 2 for Unleaded Plus\n");
    System.out.println("Press 3 for Unleaded Premium\n");

    int gastype;
    gastype = keyboard.nextInt(2);

    switch (gastype) {
        case 1:
            System.out.println("You Chose Unleaded.");
            break;

        case 2:
            System.out.println("You Chose Unleaded Plus.");
            break;

        case 3:
            System.out.println("You Chose Unleaded Premium.");
            break;

        default:
            System.out.println("Error: Invalid Number");

    }
}

private Scanner keyboard1;

{

    System.out.print("Enter gallon amount"
            + "Max amount 30 gallons)");
    int numberGallons;
    numberGallons = keyboard.nextInt(9);
}

double totalPayment = 0.0;
double numberGallons = 0;
double Unleaded = 0;
double UnleadedPlus = 0;
double UnleadedPremium = 0;
double tax = 0;
private static Scanner keyboard2;

{
    Unleaded = 2.50;
    UnleadedPlus = 3.00;
    UnleadedPremium = 3.50;
    tax = 3.5;

    totalPayment = numberGallons + Unleaded * tax;

    System.out.println("total gas amount: " + numberGallons
            + "\ntotal payment:" + Unleaded * tax + "\nthank you");

}

1 Ответ

0 голосов
/ 28 сентября 2018

Похоже, вам не хватает знаний о структуре класса, и вам нужно больше практиковаться в том, чтобы делать отступы / обращать внимание на скобки, если я удаляю части вашего кода с помощью заполнителей и правильно делаю отступы (что можно смоделировать с помощью "сворачивания").эти разделы кода в вашей IDE и автоматическое форматирование).

    public static void main(String[] args)    
    {//Start main method
        int stations; 
        keyboard2 = new Scanner(System.in);

        System.out.print("Welcome to Gas Station \n");
        System.out.println("Choose Station Number: \n");
        System.out.println("1, 2, or 3 \n");

        stations = keyboard2.nextInt(2);


        switch (stations)
        {
            case 1:
            System.out.println("You entered Station 1.");
            break;


            case 2:
            System.out.println("You entered Station 2.");
            break; 

            case 3:
            System.out.println("You entered Station 3.");
            break;

            default:
            System.out.println("Error: Invalid Number"); 
       }//End Switch
    }//End Main Method

    private Scanner keyboard;
    {
        //Snip 1
    }

    private Scanner keyboard1;
    {
        //Snip 1
    }
    //Marker 2
    double totalPayment = 0.0;
    double numberGallons = 0;
    double Unleaded = 0;
    double UnleadedPlus = 0;
    double UnleadedPremium = 0;
    double tax = 0;
    private static Scanner keyboard2;
    {
        //Snip 1
    }
}//Class End

Разделы, которые я прокомментировал с //Snip 1, вне вашего основного метода, java интерпретирует их как классинициализаторы.

(см. https://www.dummies.com/programming/java/what-is-an-initializer-in-java/)

Они НЕ работают с вашим основным методом и вообще не работают, так как не являются статическими инициализаторами класса.

частная клавиатура сканера; частная клавиатура сканера1, а другие поля ниже //Marker 2 определяются в области экземпляра класса.

Вы метод main, как и все основныеточки входа статичны, классы еще не инициализированы, поэтому все, что находится в области видимости экземпляра класса, не выполняется, и инициализаторы классов не выполнялись.

Чтобы это исправить, просто удалите скобку // End Main Method, создайте другую в самом конце вашего класса, и все снова будет включено в метод main.Я рекомендую автоматически форматировать ваш код на этом этапе.

Eclipse будет жаловаться на поля, которые теперь будут превращаться в локальные переменные, так как они будут определены в области действия метода main, так что вы можете исправить это с помощьюудаление модификатора доступа «приватный» перед клавиатурой, клавиатура1.Фактически, вы можете использовать одну и ту же переменную клавиатуры в качестве локальной переменной для каждого ее использования, даже не делая ее полем в классе.

Надеюсь, это поможет.

Редактировать: Похоже, вы пытались разделить это на несколько методов, и их перепутали с полями.Если это так, вам нужно прочитать, как объявлять методы, просто недостаточно указать {} после поля.

В этом случае Snip 1 будет означать, где вы пытались создать новые методы.вам нужно будет указать их как

private static void keyboard1()
{
    Scanner keyboard1 = new Scanner(System.in);
    //Snip1
};

, в этом случае private void keyboard1() не имеет отношения к Scanner keyboard1 и может быть названо как угодно.Затем вам нужно будет перейти к вызову этого метода в вашем основном методе.Поскольку он статичен, вы можете сделать это безопасно, но если вам нужно несколько бензоколонок, вам нужно будет сделать их нестатичными и инициализировать экземпляр.

Если вы застряли, передавая переменные между методами, вы1. можете объявить их как поля в классе (отметив, что они должны быть статическими, поскольку вы обращаетесь к ним в методе static main без создания экземпляра класса.) Или передать их в качестве аргументов методу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...