Java кассовая программа - PullRequest
       1

Java кассовая программа

0 голосов
/ 27 февраля 2019

Я должен написать кассовую программу.Программа выглядит так:

Кассовая программа.Пожалуйста, указывайте цену товара, останавливайтесь для ввода 0. 459 315 1125 3456 396 0 Сумма 5751 Ft.Средний 1150,20 Ft.Самый дорогой 3456 Ft.Самый дорогой составляет 200,47% - дороже, чем в среднем.Всего на 3 предмета дешевле, чем 500 фт.

    Scanner sc = new Scanner(System.in);
    double average = 0;
    int sum = 0;
    int mostExpensive = 0;
    int smaller500 = 0;
    System.out.println("Cash register program, please give prices, stops when 0 entered");
    int prices = sc.nextInt();
    sum += prices;

    for (double i=1; prices != 0; i++)
    {
        prices = sc.nextInt();
        if (prices < 500)
        {
            smaller500++;
        }
        sum += prices;
        average = i;
        if (prices > mostExpensive )
        {
            mostExpensive = prices;
        }

    }
    System.out.println("Total amount "+sum+" Ft.");
    System.out.printf("Average is %.2f Ft. %n",sum/average);
    System.out.println("Most expensive is "+mostExpensive+" Ft.");
    System.out.printf("The most expensive is %.2f%% expensive then the average.%n",(mostExpensive/(sum/atlag))*100-100);
    System.out.println("Totally "+smaller500+" pcs. cheaper then 500 FT.");
}

}

В чем проблема с программой?Если я даю только один предмет, не имеет значения, какой номер указан, он говорит, что 1 предмет дешевле, чем 500 форинтов.

1 Ответ

0 голосов
/ 27 февраля 2019

Если вы введете ноль для prices, это должно выйти из вашего цикла.Но прежде чем это произойдет, весь этот код запускается:

    prices = sc.nextInt();
    if (prices < 500)
    {
        smaller500++;
    }
    sum += prices;
    average = i;
    if (prices > mostExpensive )
    {
        mostExpensive = prices;
    }

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

. Вы можете изменить свой цикл на вход pricesв конце, а не в начале, поэтому ваше условие цикла будет проверено немедленно;или вы можете просто выйти из цикла при вводе нуля.

for (double i=1; prices != 0; i++)
{
    prices = sc.nextInt();
    if (prices == 0) {
        break;
    }
    if (prices < 500)
    {
        smaller500++;
    }
    sum += prices;
    average = i;
    if (prices > mostExpensive )
    {
        mostExpensive = prices;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...