Почему он печатает два раза в течение утверждения в JAVA?

Я начинающий в JAVA и мне хотелось бы знать porqué напечатай два раза ("ingresar hora válida"), если я ввожу в компьютер стоимость, которая не соответствует (900 например)

Далее я выставляю код, который я использую:

import java.util.Scanner;
public class Ej68_ultimo {

    public static void main(String[] args) {

        int hora;
        int continuanMasClientes;
        boolean sigue = false;

        ClienteEstacionamiento cliente = new ClienteEstacionamiento();
        Scanner entrada = new Scanner(System.in);
        Scanner opcion = new Scanner(System.in);
        int continua;

        // Ingreso de horas
        do
        {
            do
            {
                System.out.println("Ingrese horas: ");
                hora = Integer.parseInt(entrada.nextLine());

                if( cliente.esHoraValida(hora) == true )
                    cliente.ingresarHoras(hora);
            }
            while( cliente.esHoraValida(hora) == false );

            System.out.printf("Horas en el estacionamiento: %d, cobro correspondiente: %f\n", cliente.obtenerHoras(), cliente.calcularCargos());

            System.out.println("mas clientes? 1(si), 2(no): ");
            continua = Integer.parseInt(opcion.nextLine());             
        }
        while( continua == 1 );

    }

}

И класс "ClienteEstacionamiento" - следующий:

public class ClienteEstacionamiento {

    private int horasEstadia;
    private final static double COBROADICIONAL = 0.5;
    private final static double COBROMAXIMO = 10.0;

    public void ingresarHoras(int hrs)
    {
            horasEstadia = hrs;
    }

    public boolean esHoraValida(int hrs)
    {
        boolean esHoraCorrecta;

        if( (hrs < 1) || (hrs >= 90) )
        {
            System.out.println("Ingresar hora válida");
            esHoraCorrecta = false;
        }
        else
        {
            esHoraCorrecta = true;
        }

        return esHoraCorrecta;
    }

    public int obtenerHoras()
    {
        return horasEstadia;
    }

    public double calcularCargos()
    {
        double cobro;
        double diferenciaHoras;

        if( horasEstadia <= 3 )
            cobro = 2.0;            
        else
        {
            if ( horasEstadia >= 10)
                cobro = COBROMAXIMO;
            else
            {
                diferenciaHoras = horasEstadia - 3;
                cobro = 2 + ( diferenciaHoras * COBROADICIONAL );
            }
        }

        return cobro;

    }
}


1
задан 11.08.2019, 04:51
1 ответ

возможно будьте, из-за которого ты посылаешь называть двумя разами método cliente.esHoraValida (час) :

  do
    {
        System.out.println("Ingrese horas: ");
        hora = Integer.parseInt(entrada.nextLine());

        if( cliente.esHoraValida(hora) == true ) // uno aquí
            cliente.ingresarHoras(hora);
    }
    while( cliente.esHoraValida(hora) == false ); /// y el segundo aquí

Идеальное состояло бы в том, чтобы ты был равен в переменную, и después был переменной, которую ты оцениваешь, как ты это делаешь с "постоянной"

1
ответ дан 01.12.2019, 22:18
  • 1
    Спасибо, совсем очень ясные тысячи. – aydaroo 13.08.2019, 17:14