JAVA ciclo Mientras no recignizing String.eqauls () en la Condición

AgWordSmith:

¡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----------------------------------") ;

   }


}
Arvind Kumar Avinash:
  1. Hacer el procesamiento requerido cuando la entrada no es Enie
  2. Es mejor que usar do...whilepara evitar el uso de DepORWith = 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 Depositdebería ser double deposit.

Siéntase libre de comentar en caso de cualquier duda / problema.

Supongo que te gusta

Origin http://10.200.1.11:23101/article/api/json?id=410439&siteId=1
Recomendado
Clasificación