Así que estoy haciendo un programa java que toma lo que compró un cliente y usa una matriz y un mapa hash para calcular cuánto cuesta la tarea de CSE (estaba jugando con la impresión de otras cosas con esto también). Pero ahora quiero que el usuario ingrese primero el producto y luego la cantidad para poder hacer un programa de "caja registradora" simple y fácil de usar. Básicamente solo quiero system.out's ¿Alguna idea sobre cómo hacer esto?
No estoy seguro de si un bucle con múltiples escáneres / sistemas en líneas de código funcionaría o no, y realmente no estoy seguro de cómo abordar este problema.
Ah, y además, si te pidieron algo similar, ¡dímelo! No pude encontrar nada similar, pero probablemente estoy equivocado.
import java.util.HashMap;
import java.util.ArrayList;
public class preLab3 {
// PreLab Q1: Compute the price of buying a specific quantity of a single item
public static double getPriceSingleItemType(HashMap<String, Double> priceList, String itemType, int quantity) {
double itemPrice = priceList.get(itemType);
return itemPrice * quantity;
}
// PreLab Q2: Compute the price of a single order
public static double getPrice(HashMap<String, Double> priceList, ArrayList<String> basket) {
double totalCost = 0.0;
for(String item: basket) {
double itemPrice = priceList.get(item);
totalCost = totalCost + itemPrice;
}
return totalCost;
}
public static HashMap<String, Double> getPriceList() {
HashMap<String, Double> priceList = new HashMap<String, Double>();
priceList.put("eggs", 1.79); // per dozen
priceList.put("butter", 3.19);
priceList.put("cheese", 5.99);
priceList.put("apple", 0.99); // per pound
priceList.put("banana", 0.39); // per pound
priceList.put("strawberries", 1.99);
priceList.put("peppers", 0.99);
priceList.put("tomato sauce", 0.5);
priceList.put("chocolate chips", 2.29);
return priceList;
}
public static void main(String[] args) {
System.out.println(getPriceList());
// PreLab Q3: I want to buy 3 lbs of strawberries
double price = getPriceSingleItemType(getPriceList(), "strawberries", 3);
System.out.println(price);
ArrayList<String> cart = new ArrayList<>();
cart.add("strawberries");
cart.add("strawberries");
cart.add("strawberries");
cart.add("chocolate chips");
cart.add("banana");
cart.add("banana");
cart.add("apple");
cart.add("eggs");
cart.add("butter");
double totalCost = getPrice(getPriceList(), cart);
System.out.println("The customer must pay: " + totalCost + " USD");
ArrayList<HashMap<String, Integer>> orders = new ArrayList<>();
for(HashMap<String, Integer> maps : orders) {
}
}
}
2 respuestas
Primero cree un Scanner
objeto para la entrada del usuario, luego use el código de ejemplo que ya tiene donde cart.add(item)
agrega la entrada del usuario item
, y repita cada elemento para la entrada del usuario quantity
. Entonces, en conjunto, algo como esto:
// ... same code above
ArrayList<String> cart = new ArrayList<>();
Scanner input = new Scanner(System.in);
String user_item = "";
int user_quantity = 0;
System.out.println("What items would you like to buy?");
// Loop to repeatedly get user input and add items to cart
// until user enters "q" for item to quit.
do {
System.out.print("Item? (q to quit) ");
user_item = input.nextLine();
if (user_item.equals("q")){
break;
}
System.out.print("How many " + user_item + "? ");
user_quantity = input.nextInt();
System.out.println(user_quantity + " " + user_item);
for(int q = 0; q <= user_quantity; q++){
cart.add(user_item);
}
} while(!input.nextLine().equals("q"));
input.close();
// Remove these
// cart.add("strawberries");
// cart.add("strawberries");
// cart.add("strawberries");
// cart.add("chocolate chips");
// cart.add("banana");
// cart.add("banana");
// cart.add("apple");
// cart.add("eggs");
// cart.add("butter");
double totalCost = getPrice(getPriceList(), cart);
// ... same code below
Ejemplo de ejecución:
{banana=0.39, eggs=1.79, apple=0.99, butter=3.19, peppers=0.99, chocolate chips=2.29, tomato sauce=0.5, strawberries=1.99, cheese=5.99}
What items would you like to buy?
Item? (q to quit) butter
How many butter? 1
1 butter
Item? (q to quit) eggs
How many eggs? 2
2 eggs
Item? (q to quit) q
The customer must pay: 11.75 USD
Por supuesto, probablemente también desee agregar manejo de errores / excepciones para la entrada de usuario no válida.
Espero que esto ayude.
En primer lugar, debería considerar mirar esta publicación para obtener referencias futuras / actuales sobre métodos estáticos. https://stackoverflow.com/a/7084473/1770303
En este caso, debería hacer referencia a su mapa de hash como un objeto, ya sea declarándolo globalmente en su clase y agregando pares clave-valor en un método o creando una clase separada que haga esencialmente lo mismo. La forma en que organiza su código depende en gran medida de la persona. Por último, cada entrada del usuario debe comprobarse con los valores clave para ver si es una clave válida antes de continuar. Si la entrada del usuario no está contenida en su mapa, ¿cuál es el requisito? ¿Cómo vas a manejar eso?
En cuanto al escáner, haría referencia a la siguiente publicación que proporciona el enlace a la documentación sobre la clase de escáner. https://stackoverflow.com/a/14679497/1770303
Nuevas preguntas
java
Java es un lenguaje de programación de alto nivel. Utilice esta etiqueta cuando tenga problemas para usar o comprender el idioma en sí. Esta etiqueta rara vez se usa sola y se usa con mayor frecuencia junto con [spring], [spring-boot], [jakarta-ee], [android], [javafx], [hadoop], [gradle] y [maven].