Проблема с циклом while вместе с условиями if

У меня есть проблема, что я думаю, что любой промежуточный программист может решать это. Случай состоит в том, что у меня есть цикл while, в котором, если я помещаю в неудар в лунку (например) "сумму" и добавляю, что числа осуществляется вычитание, но после вновь работает while и выходит как будто он не поместил после ничего в неудар в лунку и у меня выходит ошибка (и после, очевидно, он вновь работает).

Код:

import java.util.Scanner;

public class MainClass {
    public static void main(String[] args){

        Scanner scan = new Scanner(System.in);

        System.out.println("\tCalculadora");
        System.out.println("--------------------------");


        int condicion = 1;
        while(condicion == 1){

            System.out.println("¿Qué operación desea realizar?");
            System.out.println("Suma");
            System.out.println("Resta");
            System.out.println("Salir");

            String operacion = scan.nextLine();

            if(operacion.toLowerCase().equals("suma")){
                System.out.println("Introduce los números que quieres sumar");

                System.out.println("Número 1: ");
                double numero1 = scan.nextDouble();

                System.out.println("Número 2: ");
                double numero2 = scan.nextDouble();

                Suma suma = new Suma(numero1, numero2);

                System.out.println("Resultado: " + suma.getSuma());

            }else if(operacion.toLowerCase().equals("resta")){
                System.out.println("Introduce los números que quieres restar");

                System.out.println("Número 1: ");
                double numero1 = scan.nextDouble();

                System.out.println("Número 2: ");
                double numero2 = scan.nextDouble();


                Resta resta = new Resta(numero1, numero2);

                System.out.println("Resultado: " + resta.getResta());

            }else if(operacion.toLowerCase().equals("salir")){
                System.out.println("¡Adiós! ;)");
                condicion = 0;


            }else{
                System.out.println("Error: Puede ser que hayas escrito mal la palabra. Vuelve a intentarlo");
            }
        }
    }
}

Из-за консоли:

        Calculadora
--------------------------
¿Qué operación desea realizar?
Suma
Resta
Salir
SUMA (input)
Introduce los números que quieres sumar
Número 1: 
1 (input)
Número 2: 
1 (input)
Resultado: 2.0
¿Qué operación desea realizar?
Suma
Resta
Salir
Error: Puede ser que hayas escrito mal la palabra. Vuelve a intentarlo
¿Qué operación desea realizar?
Suma
Resta
Salir

Если вы нуждаетесь в других два класса, он послал их вам, но я думаю, что он не надо, поэтому не добавляю их.

Привет! ;)

3
задан 02.12.2016, 22:28
3 ответа

Проблема, что выполнил другую, ты видишь и вышло это сообщение ошибки, он благодаря тому, что ты используешь mГ©todo nextDouble, и будьте одиноким захвати стоимость, которой они требуют, взамен nextLine нуждается в разрыве линии, чтобы заканчиваться, и как эта в цикле нарушает, потому что раньше был использован nextDouble.

Используя ты cГіdigo deberГ, - чтобы оставаться asГ-:

public static void main(String args[]) throws Exception{
    Scanner scan = new Scanner(System.in);
    System.out.println("\tCalculadora");
    System.out.println("--------------------------");
    int condicion = 1;
    while(condicion == 1){
        System.out.println("¿Qué operación desea realizar?");
        System.out.println("Suma");
        System.out.println("Resta");
        System.out.println("Salir");
        String operacion = scan.nextLine();
        if(operacion.toLowerCase().equals("suma")){
            System.out.println("Introduce los números que quieres sumar");
            System.out.println("Número 1: ");
            double numero1 = scan.nextDouble();
            System.out.println("Número 2: ");
            double numero2 = scan.nextDouble();
            Suma suma = new Suma(numero1, numero2);
            System.out.println("Resultado: " + suma.getSuma());
            scan.nextLine();
        }else if(operacion.toLowerCase().equals("resta")){
            System.out.println("Introduce los números que quieres restar");
            System.out.println("Número 1: ");
            double numero1 = scan.nextDouble();
            System.out.println("Número 2: ");
            double numero2 = scan.nextDouble();
            Resta resta = new Resta(numero1, numero2);
            System.out.println("Resultado: " + resta.getResta());
            scan.nextLine();
        }else if(operacion.toLowerCase().equals("salir")){
            System.out.println("¡Adiós! ;)");
            condicion = 0;
        }else{
            System.out.println("Error: Puede ser que hayas escrito mal la palabra. Vuelve a intentarlo");
        }
    }

}

, Но я рекомендую тебе использовать next() в этом случае, потому что ты одинокий вводить текст в компьютер без места.

public static void main(String args[]) throws Exception{
    Scanner scan = new Scanner(System.in);
    System.out.println("\tCalculadora");
    System.out.println("--------------------------");
    int condicion = 1;
    while(condicion == 1){
        System.out.println("¿Qué operación desea realizar?");
        System.out.println("Suma");
        System.out.println("Resta");
        System.out.println("Salir");
        String operacion = scan.next();
        if(operacion.toLowerCase().equals("suma")){
            System.out.println("Introduce los números que quieres sumar");
            System.out.println("Número 1: ");
            double numero1 = scan.nextDouble();
            System.out.println("Número 2: ");
            double numero2 = scan.nextDouble();
            Suma suma = new Suma(numero1, numero2);
            System.out.println("Resultado: " + suma.getSuma());
        }else if(operacion.toLowerCase().equals("resta")){
            System.out.println("Introduce los números que quieres restar");
            System.out.println("Número 1: ");
            double numero1 = scan.nextDouble();
            System.out.println("Número 2: ");
            double numero2 = scan.nextDouble();
            Resta resta = new Resta(numero1, numero2);
            System.out.println("Resultado: " + resta.getResta());
        }else if(operacion.toLowerCase().equals("salir")){
            System.out.println("¡Adiós! ;)");
            condicion = 0;
        }else{
            System.out.println("Error: Puede ser que hayas escrito mal la palabra. Vuelve a intentarlo");
        }
    }

}
2
ответ дан 24.11.2019, 12:17
  • 1
    Действительно это единственный ответ, который фокусируется в проблеме. ¡ Желанный в Stackoverflow! –  Francisco Romero 03.12.2016, 00:35
  • 2
    ¡ Большое спасибо! Но вопрос, ¿ потому что añ ades throws Exception? Я это снял и решается равно проблема –  Runforyourlife 03.12.2016, 00:46
  • 3
    Привет @Runforyourlife throws одинокий Exception funcionará когда случится excepció n в твоем có я говорю. –  Francisco Romero 03.12.2016, 02:15

do while он был бы более подходящим:

import java.util.Scanner;

public class MainClass {
    public static void main(String[] args){

        Scanner scan = new Scanner(System.in);

        System.out.println("\tCalculadora");
        System.out.println("--------------------------");


        int condicion = 1;
        do{

            System.out.println("¿Qué operación desea realizar?");
            System.out.println("Suma");
            System.out.println("Resta");
            System.out.println("Salir");

            String operacion = scan.nextLine();

            if(operacion.toLowerCase().equals("suma")){
                System.out.println("Introduce los números que quieres sumar");

                System.out.println("Número 1: ");
                double numero1 = scan.nextDouble();

                System.out.println("Número 2: ");
                double numero2 = scan.nextDouble();

                Suma suma = new Suma(numero1, numero2);

                System.out.println("Resultado: " + suma.getSuma());

            }else if(operacion.toLowerCase().equals("resta")){
                System.out.println("Introduce los números que quieres restar");

                System.out.println("Número 1: ");
                double numero1 = scan.nextDouble();

                System.out.println("Número 2: ");
                double numero2 = scan.nextDouble();


                Resta resta = new Resta(numero1, numero2);

                System.out.println("Resultado: " + resta.getResta());

            }else if(operacion.toLowerCase().equals("salir")){
                   System.out.println("¡Adiós! ;)");
                   condicion = 0;

            }else{
                System.out.println("Error: Puede ser que hayas escrito mal la palabra. Vuelve a intentarlo");
            }
        } while(condicion == 1)
    }
}

Заметь: Он был бы рекомендуемым использовать case вместо if.. else.

0
ответ дан 24.11.2019, 12:17
  • 1
    У меня нет penú ltimo else, это else if –  Runforyourlife 02.12.2016, 22:44
  • 2
    Конечно tendrá s razó n, но меня не решает проблема ;( –  Runforyourlife 02.12.2016, 23:16

Я рекомендую тебе операции они менять книжный магазин Scanner на BufferedReader

Различие между двумя, дело в том, что Scanner быстрее, использования, но BufferedReader более точный в момент захватывания данных.

2
ответ дан 24.11.2019, 12:17

Теги

Похожие вопросы