¡OKAY! Estoy tratando de conseguir el programa para reconocer la letra "E" para salir del bucle while. Imprimir mis declaraciones que terminan y luego el programa está hecho! ¡Encima! ¡Eso es! Para probar esto, estoy tratando de salida tan pronto como el símbolo me pide que ponga una carta, pero no importa lo que no lo puedo reconocer que cualquier letra o lo enciendo a (eso no es D o W) que han intentado
- toUpperCase (), tanto el método después de la entrada y con la nextLine ()
- while (! DepORWith.equals ( "E") ||! DepORWith.equals ( "E"))
- while (! DepORWith.equals ( "E") &&! DepORWith.equals ( "e"))
- Cambio de los casos nunca por dónde van
- Tratar de cambiar todo a los tipos char (gran error)
- poniendo una carta como un marcador de posición y luego sólo va a cambiar
- Usando .equalsIgnoreCase () con estos otros 'soluciones'
- Usando .isEmpty ()
He intentado muchas cosas que no recuerdo. Algunos de estos 'solución' terminaron las preguntas bucle para siempre sin importar mi entrada. Voy pulse E, consigo mi propio error, pulse E de nuevo y se realiza un bucle de mi error. Dios necesito ayuda por favor.
Sólo hay que pulsar E, Imprimir las no declaraciones de bucle, y luego se sale del programa. Estoy poniendo todo el código abajo para el análisis completo, por favor. Yo no soy avanzado con Java esto es para una clase de Introducción a Java, que en realidad sólo sé lo básico
import java.util.Scanner ;
import java.io.* ;
public class IOExam {
public static void main(String[] args) throws IOException
{
double Deposit = 0;
boolean DepStop = false;
int DEPTransactionNUM = 0;
double DepTotal = 0;
double Withdrawal = 0;
boolean WithStop = false;
int WITHTransactionNUM = 0;
double WithTotal = 0;
Scanner keyboard = new Scanner(System.in);
//Ask For choice
String DepORWith = "" ;
while (!DepORWith.equals("E"))
{
System.out.print("Deposit or Withdrawal D/W ? (Press E to Exit):") ;
DepORWith = keyboard.nextLine() ;
if (DepORWith.equalsIgnoreCase("D"))
{
// Create Document First
PrintWriter DepositTXT = new PrintWriter ("Deposit.txt");
DepositTXT.println("Transaction Number \t Amount");
DepositTXT.println("--------------------------------------");
//Input Deposit
while (DepStop == false)
{
DEPTransactionNUM += 1;
System.out.print("Input amount for deposits:") ;
Deposit = keyboard.nextDouble() ;
keyboard.nextLine() ;
if (Deposit < 0)
{
System.out.print("---ERRROR ---\nInput NON NEGATIVE amount for deposits:") ;
Deposit = keyboard.nextDouble() ;
keyboard.nextLine() ;
}
DepTotal = DepTotal + Deposit;
DepositTXT.printf("\n\t%d \t\t\t $%,.2f", DEPTransactionNUM, Deposit);
String Confirmation ;
System.out.print("Would you Like to deposit again? Y/N: ");
Confirmation = keyboard.nextLine() ;
if (Confirmation.equalsIgnoreCase("y"))
{
DepStop = false;
}
else if (Confirmation.equalsIgnoreCase("n"))
{
DepStop = true;
}
else
{
System.out.println("---ERRROR ---\nINPUT Y OR N\nWould you Like to deposit again? Y/N") ;
Confirmation = keyboard.nextLine() ;
}
}
DepositTXT.println("\n--------------------------------------");
DepositTXT.printf("\nTotal \t\t\t $%,.2f", DepTotal);
DepositTXT.close();
}
else if (DepORWith.equalsIgnoreCase("W"))
{
// Create Document First
PrintWriter WithdrawalTXT = new PrintWriter ("Withdrawal.txt");
WithdrawalTXT.println("Transaction Number \t Amount");
WithdrawalTXT.println("--------------------------------------");
//Input Withdrawals
while (WithStop == false)
{
WITHTransactionNUM += 1;
System.out.print("Input amount for withdrawal:") ;
Withdrawal = keyboard.nextDouble() ;
keyboard.nextLine() ;
if (Withdrawal < 0)
{
System.out.print("---ERRROR ---\nInput NON NEGATIVE amount for withdrawal:") ;
Withdrawal = keyboard.nextDouble() ;
keyboard.nextLine() ;
}
WithTotal = WithTotal + Withdrawal;
WithdrawalTXT.printf("\n\t%d \t\t\t $%,.2f", WITHTransactionNUM, Withdrawal);
String Confirmation ;
System.out.print("Would you Like to withdrawal again? Y/N: ");
Confirmation = keyboard.nextLine() ;
if (Confirmation.equalsIgnoreCase("y"))
{
WithStop = false;
}
else if (Confirmation.equalsIgnoreCase("n"))
{
WithStop = true;
System.out.print("Deposit or Withdrawal D/W ? (Press E to Exit):") ;
DepORWith = keyboard.nextLine() ;
}
else
{
System.out.println("---ERRROR ---\nINPUT Y OR N\nWould you Like to withdrawal again? Y/N: ") ;
Confirmation = keyboard.nextLine() ;
}
}
WithdrawalTXT.println("\n--------------------------------------");
WithdrawalTXT.printf("\nTotal \t\t\t $%,.2f", DepTotal);
WithdrawalTXT.close();
}
else
{
System.out.print("---ERRROR ---\nINPUT D OR W OR E \n") ;
System.out.print("Deposit or Withdrawal D/W ?:") ;
DepORWith = keyboard.nextLine() ;
}
}
System.out.printf("Deposit Total: %,.2d \nWithdrawal Total: %,.2d",DepTotal, WithTotal) ;
System.out.print("\n----------------------------------") ;
System.out.print("\nThank you for Using Old National") ;
System.out.print("\n----------------------------------") ;
}
}
- Hacer el procesamiento requerido cuando la entrada no es
E
nie
- Es mejor que usar
do...while
para evitar el uso deDepORWith = keyboard.nextLine();
dos veces.
Hacerlo de la siguiente manera:
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Scanner;
public class Program {
public static void main(String[] args) throws IOException {
double Deposit = 0;
boolean DepStop = false;
int DEPTransactionNUM = 0;
double DepTotal = 0;
double Withdrawal = 0;
boolean WithStop = false;
int WITHTransactionNUM = 0;
double WithTotal = 0;
Scanner keyboard = new Scanner(System.in);
// Ask For choice
String DepORWith = "";
do {
System.out.print("Deposit or Withdrawal D/W ? (Press E to Exit):");
DepORWith = keyboard.nextLine();
if (!(DepORWith.equalsIgnoreCase("D") || DepORWith.equalsIgnoreCase("W"))) {
if (!DepORWith.equalsIgnoreCase("E")) {
System.out.println("This is not a valid input");
} else {
System.out.println("Goodbye!");
}
} else if (!DepORWith.equalsIgnoreCase("E")) {
if (DepORWith.equalsIgnoreCase("D")) {
// Create Document First
PrintWriter DepositTXT = new PrintWriter("Deposit.txt");
DepositTXT.println("Transaction Number \t Amount");
DepositTXT.println("--------------------------------------");
// Input Deposit
while (DepStop == false) {
DEPTransactionNUM += 1;
System.out.print("Input amount for deposits:");
Deposit = keyboard.nextDouble();
keyboard.nextLine();
if (Deposit < 0) {
System.out.print("---ERRROR ---\nInput NON NEGATIVE amount for deposits:");
Deposit = keyboard.nextDouble();
keyboard.nextLine();
}
DepTotal = DepTotal + Deposit;
DepositTXT.printf("\n\t%d \t\t\t $%,.2f", DEPTransactionNUM, Deposit);
String Confirmation;
System.out.print("Would you Like to deposit again? Y/N: ");
Confirmation = keyboard.nextLine();
if (Confirmation.equalsIgnoreCase("y")) {
DepStop = false;
} else if (Confirmation.equalsIgnoreCase("n")) {
DepStop = true;
} else {
System.out.println("---ERRROR ---\nINPUT Y OR N\nWould you Like to deposit again? Y/N");
Confirmation = keyboard.nextLine();
}
}
DepositTXT.println("\n--------------------------------------");
DepositTXT.printf("\nTotal \t\t\t $%,.2f", DepTotal);
DepositTXT.close();
} else if (DepORWith.equalsIgnoreCase("W")) {
// Create Document First
PrintWriter WithdrawalTXT = new PrintWriter("Withdrawal.txt");
WithdrawalTXT.println("Transaction Number \t Amount");
WithdrawalTXT.println("--------------------------------------");
// Input Withdrawals
while (WithStop == false) {
WITHTransactionNUM += 1;
System.out.print("Input amount for withdrawal:");
Withdrawal = keyboard.nextDouble();
keyboard.nextLine();
if (Withdrawal < 0) {
System.out.print("---ERRROR ---\nInput NON NEGATIVE amount for withdrawal:");
Withdrawal = keyboard.nextDouble();
keyboard.nextLine();
}
WithTotal = WithTotal + Withdrawal;
WithdrawalTXT.printf("\n\t%d \t\t\t $%,.2f", WITHTransactionNUM, Withdrawal);
String Confirmation;
System.out.print("Would you Like to withdrawal again? Y/N: ");
Confirmation = keyboard.nextLine();
if (Confirmation.equalsIgnoreCase("y")) {
WithStop = false;
} else if (Confirmation.equalsIgnoreCase("n")) {
WithStop = true;
System.out.print("Deposit or Withdrawal D/W ? (Press E to Exit):");
DepORWith = keyboard.nextLine();
} else {
System.out
.println("---ERRROR ---\nINPUT Y OR N\nWould you Like to withdrawal again? Y/N: ");
Confirmation = keyboard.nextLine();
}
}
WithdrawalTXT.println("\n--------------------------------------");
WithdrawalTXT.printf("\nTotal \t\t\t $%,.2f", DepTotal);
WithdrawalTXT.close();
}
System.out.printf("Deposit Total: %,.2d \nWithdrawal Total: %,.2d", DepTotal, WithTotal);
System.out.print("\n----------------------------------");
System.out.print("\nThank you for Using Old National");
System.out.print("\n----------------------------------");
} else {
System.out.println("Goodbye!");
}
} while (!DepORWith.equalsIgnoreCase("E"));
}
}
Un análisis de la muestra:
Deposit or Withdrawal D/W ? (Press E to Exit):e
Goodbye!
Otra muestra de la ejecución:
Deposit or Withdrawal D/W ? (Press E to Exit):x
This is not a valid input
Deposit or Withdrawal D/W ? (Press E to Exit):e
Goodbye!
Otra muestra de la ejecución:
Deposit or Withdrawal D/W ? (Press E to Exit):d
Input amount for deposits:
Otra muestra de la ejecución:
Deposit or Withdrawal D/W ? (Press E to Exit):x
This is not a valid input
Deposit or Withdrawal D/W ? (Press E to Exit):d
Input amount for deposits:
Además, cambiar los nombres de las variables en el código de seguimiento de Java convenciones de nombres por ejemplo, double Deposit
debería ser double deposit
.
Siéntase libre de comentar en caso de cualquier duda / problema.