Estoy tratando de crear un programa que simule conducir un automóvil. En mi programa, tengo el siguiente bucle para permitir que el usuario "conduzca" las millas que desee:
public void run() { do { System.out.println("How many miles would you like to drive?"); int userInput = scanner.nextInt(); if (userInput > 360) { System.out.println("You don't have enough fuel to drive that far! Please try again."); run(); } System.out.println("You are driving: " + userInput + " miles."); try { for(int c = 0; c < parts.size(); c++){ parts.get(c).function(userInput); } } catch (BreakdownException e) { } } while (getBoolean("Keep driving?")); Me gustaría tomar la variable userInput y guardarla para poder hacer un seguimiento de cuántas millas hay en el tanque de gasolina. Este es el código que tengo actualmente para eso:
public void function(int milesDriven) throws BreakdownException { int mpg = 30; int gallons = 12; int totalMiles = gallons * mpg; int milesLeft = totalMiles - milesDriven; if(milesLeft <= 0) { throw new BreakdownException("You ran out of fuel!"); } else if (milesLeft <= (totalMiles / 4)) { if (getBoolean("You are low on fuel! Refuel?")) { milesLeft = gallons * mpg; System.out.println("You now have enough fuel to travel " + totalMiles + " miles."); } } else { System.out.println("You now have enough fuel to travel " + milesLeft + " miles."); } } Actualmente, cada vez que se ejecuta el bucle en el primer bloque de código, se restablece el valor de milesDriven en el segundo bloque de código. Así, cada vez que el usuario "conduce", su depósito de gasolina se rellena automáticamente. ¿Hay alguna manera de que pueda almacenar el valor de entrada de userInput para que se conserve entre bucles?
¡Gracias!
Si no quiere cambiar demasiado las cosas, una manera fácil sería simplemente acumular la entrada del usuario con otra variable y pasar ese valor al método de function en lugar de la entrada del usuario que se actualiza en cada bucle. Entonces, por ejemplo, fuera del ciclo do-while tendrías:
int milesDriven = 0;Luego, cada vez que el usuario proporcione una nueva entrada, agregue ese valor a las millas recorridas:
int userInput = scanner.nextInt(); milesDriven += userInput; Y finalmente pase ese valor al método de function en lugar de la entrada del usuario:
parts.get(c).function(milesDriven);