Добавление цен из массива в Java?

У меня есть несколько вопросов для обзора к предстоящему тесту в моем классе Java. В том, над которым я сейчас работаю, нас просят создать меню кафе с двумя массивами, один с элементами меню, а другой с ценами. Мы должны напечатать среднее значение всех цен, прежде чем спрашивать пользователя, какие элементы из меню им нужны, а затем, наконец, распечатать общее количество элементов.

Мой код:

import java.util.Scanner;

public class cafeMenu {

    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        int choice; 
        double total = 0;

        //Array for storing prices
        double [] cafePrice = new double[5];
        cafePrice[0]= 6.99;
        cafePrice[1]= 5.99;
        cafePrice[2]= 2.99;
        cafePrice[3]= 1.50;
        cafePrice[4]= 2.50;

        //Menu item array
        String [] cafeDrink = new String[5];
        cafeDrink[0] = "Macchiato";
        cafeDrink[1] = "Latte"; 
        cafeDrink[2] = "Americano";
        cafeDrink[3] = "Tea";
        cafeDrink[4] = "Cappichino";

        //Welcome user and gather their menu selection
        System.out.println("Welcome to our cafe! Please enjoy!");
        System.out.printf("The average pricing for our drinks is: %.2f \n", + cafeAvg( cafePrice));
        System.out.println("Please enter a menu selection:\n"
                + "0. Macchiato -- $6.99\n"
                + "1. Latte -- $5.99\n"
                + "2. Americano -- $2.99\n"
                + "3. Tea -- $1.50\n"
                + "4. Cappichino -- $2.50");
        choice = input.nextInt();

        //Add up the total
        for(int i = 0; i < cafePrice.length; i++ ) {
            if (choice == cafePrice[i]) {
                total += cafePrice[i];
            }
        }
        System.out.println("Your total is: " + total);
    }

    //Method for average menu price
    public static double cafeAvg(double[] array) {
        double sum = 0;
        double sum2 = 0;
        for(int i = 0; i < array.length; i++) {
            sum += array[i];
            sum2 = sum /array.length;
        }
        return sum2;
    }
}

Я еще не настроил цикл do while, чтобы продолжать спрашивать пользователя о вводе, потому что я как бы застрял, складывая цены вместе. Могу представить, что сделал ошибку в цикле for или, возможно, логическую ошибку? Это результат, который я получаю, независимо от сделанного выбора:

Welcome to our cafe! Please enjoy!
The average pricing for our drinks is: 3.99
Please enter a menu selection:
0. Macchiato -- $6.99
1. Latte -- $5.99
2. Americano -- $2.99
3. Tea -- $1.50
4. Cappichino -- $2.50
4
Your total is: 0.0

Любые идеи очень приветствуются.

внимательно прочтите свой метод cafeAvg. Вы на 100% уверены в том, что он делает? Используйте отладчик (или бумагу + ручку), чтобы четко наблюдать эволюцию ваших переменных во время выполнения метода.

LoneWanderer 23.11.2018 21:40
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
1
3 562
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы делаете следующее неправильно,

    if (choice == cafePrice[i]) {
        total += cafePrice[i];
    }

choice - это int, а cafeprice [i] - double ... более того, они представляют разные вещи. Я думаю, вы действительно хотите сделать следующее:

total += cafePrice[choice];

вместо всего цикла for.

Этот код работает для меня,

    public static void main(String args[]) {
        Scanner input = new Scanner(System.in);
    int choice; 
    double total = 0;

    //Array for storing prices
    double [] cafePrice = new double[5];
    cafePrice[0]= 6.99;
    cafePrice[1]= 5.99;
    cafePrice[2]= 2.99;
    cafePrice[3]= 1.50;
    cafePrice[4]= 2.50;

    //Menu item array
    String [] cafeDrink = new String[5];
    cafeDrink[0] = "Macchiato";
    cafeDrink[1] = "Latte"; 
    cafeDrink[2] = "Americano";
    cafeDrink[3] = "Tea";
    cafeDrink[4] = "Cappichino";

    //Welcome user and gather their menu selection
    System.out.println("Welcome to our cafe! Please enjoy!");
    System.out.printf("The average pricing for our drinks is: %.2f \n", + cafeAvg( cafePrice));
    System.out.println("Please enter a menu selection:\n"
            + "0. Macchiato -- $6.99\n"
            + "1. Latte -- $5.99\n"
            + "2. Americano -- $2.99\n"
            + "3. Tea -- $1.50\n"
            + "4. Cappichino -- $2.50");
    choice = input.nextInt();

    //Add up the total
    total += cafePrice[choice];
    System.out.println("Your total is: " + total);
    }

    //Method for average menu price
public static double cafeAvg(double[] array) {
    double sum = 0;
    double sum2 = 0;
    for(int i = 0; i < array.length; i++) {
        sum += array[i];
        sum2 = sum /array.length;
    }
    return sum2;
}

Это дает те же результаты, итоговое значение по-прежнему отображается как 0,0. Я неправильно заполнил массив?

Nicholas 23.11.2018 21:30

Другие вопросы по теме