Java — Почему моя переменная отображается как 0 в Java?

#java

#java

Вопрос:

Я новый программист, выполняющий задание для класса. Я пытаюсь рассчитать прибыль от продажи обуви на разных веб-сайтах. Однако, когда я пытаюсь получить переменную плату, вывод возвращается как 0 . Пожалуйста, помогите, спасибо!

Я попытался сделать Fee = 5; однако вывод все еще был 0.0

 import java.util.Scanner;

public class Shoe
{
    private double Cost;
    private double SoldPrice;
    private double ShippingCost;
    private double Fee;
    public Shoe()
    {
        Scanner input = new Scanner(System.in);
        System.out.println( " Enter Cost Of Shoe. " );
        Cost = input.nextDouble();
        System.out.println ( " Enter Sold Price Before Fees. ");
        SoldPrice = input.nextDouble();
        System.out.println ( " Enter shipping cost. " );
        ShippingCost = input.nextDouble();
        System.out.println ( " How did you sell the Shoe? [ Stockx , Ebay , Goat , Local , Grailed , Paypal  ] ? ");
//user MUST enter the provided sites perfectly.
        {
            String choice = input.next();
            if(choice.equals(" Stockx "))
            {
                Fee = 0.09;
//determines what the value of Fee should be set to, depending on where the shoe was sold.
            }
            else if (choice.equals(" Ebay "))
            {
                Fee = (( 0.029)   0.3 );
            }
            else if(choice.equals(" Goat "))
            {
                Fee = (( 0.095 )   5 );
            }
            else if(choice.equals(" Local "))
            {
                Fee = 0;
            }
            else if(choice.equals(" Grailed "))
            {
                Fee = (( 0.065 )   0.3 );
            }
            else if(choice.equals(" Paypal "))
            {
                Fee =(( 0.029)   0.3 );
            }
            else if (choice.equals(" Test "))
            {
                Fee = 5;
//attempted to test if it was just rounding down for variables, however, the output was 0 when Fee was 5.
            }
            System.out.println(  Fee );
        }
    }
}
  

Комментарии:

1. Чтобы сделать ваш код читаемым, правильно расставив отступы, увеличились бы шансы людей прочитать его.

2. Вы знаете, что если вы сравните свои строки с " Stockx " пробелами вокруг слова matter, верно?

3. Подсказка: попробуйте распечатать choice , чтобы вы знали, что часть «захват пользовательского ввода» работает должным образом.

4. Я почти уверен, Scanner.next() что по умолчанию ничего не возвращает, начинающееся или заканчивающееся пробелом…

5. Также: все имена переменных в Java идут в camelCase. Это должна быть плата или стоимость. Это делает ваш код намного сложнее для чтения опытным Java-программистам.

Ответ №1:

Федерико Клез Каллока прав.

Удалите пробелы, окружающие значения для проверки, и это сработает.

Для безопасности вы даже можете использовать trim() метод при вводе, поэтому, даже если вы введете " Ebay " , он будет работать.