Как я могу выдавать отрицательные числа?

Я пробую выдавать отрицательные числа в java, и только смог выдавать символы. Кроме этого, я хочу, чтобы он вновь спрашивал снова, а именно, что он не рожает условие. Я это сделал с hasNext и потом достал их из буфера. На данный момент я считаю сделанным это:

 Scanner scanner = new Scanner(System.in);

        int F; 
        int C; 

        System.out.println("Introduce el número 1");
        boolean esUnNumeroValidoF = scanner.hasNextInt();

        System.out.println("Introduce el número 2");
        boolean esUnNumeroValidoC = scanner.hasNextInt();

        if (esUnNumeroValidoF) {
            int numeroIntroducidoF = scanner.nextInt();
            scanner.nextLine();
            if (esUnNumeroValidoC) {
                int numeroIntroducidoC = scanner.nextInt();
                scanner.nextLine();

               } else {

                System.out.println("Error, no has introducido un número entero. Prueba de nuevo");
                scanner.nextLine();
               }

            } else {

            System.out.println("Error, no has introducido un número entero. Prueba de nuevo");
            scanner.nextLine();
        }

        scanner.close();
    }
}
4
задан 02.11.2016, 15:18
3 ответа

Если ты хочешь, чтобы он повторился, когда они введут отрицательное число, ты можешь делать цикл do-while храня число, чтобы знать, действительный ли он. Что-то похожее на это:

boolean esUnNumeroValidoF = false;

do{
    System.out.println("Introduce el número 1");
    int numero = scanner.nextInt();

    if (numero < 0){
       esunNumeroValidoF = false;
    }else{
        esunNumeroValidoF = true;
    }
}while(!esUnNumeroValidoF);

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

Как разъяснение, как он прокомментировал @Dev.Joel было бы возможно использовать прямо условие в цикле, без переменных booleanas. Просто я сделал это таким для того, чтобы OP мог сравнивать это с Вашим кодом. Однако, упрощенный код и внутри функции он остался бы как:

public static int dameUnPositivo(int indice){
    int numero;

    do{
         System.out.println("Introduce el número " + indice);
         numero = scanner.nextInt();
    }while(numero < 0);

    return numero;
}

где индекс был бы порядком во время ввождения чисел (номер 1, номер 2, номер 3, и т.д.).

Посредством этой функции, ты позвонил бы в эту функцию и она возвратила бы тебе целое число, так как уже она сделала бы утверждение из, если он отрицательный или положительный внутри той же самой.

Чтобы называть ее, просто ты был бы должен делать следующее с твоего главного метода, и давая из-за факта, который numero1 и numero2 он, где ты хочешь хранить первые два числа:

int numero1 = dameUnPositivo(1);
int numero2 = dameUnPositivo(2);

Поскольку ты видишь, с функцией ты можешь уберегаться много линий кода, которые практически равны.

Конечно, есть тысяча способов делать ту же дорожку, но я думаю, что это самая простая из всех. В случае, если ты хотел возвратить booleano просто ты был бы должен использовать эту функцию с if первого фрагмента кода и возвращать esunNumeroValidoF.

4
ответ дан 24.11.2019, 12:53
  • 1
    Это ответ v и # 225; lida. Но я думаю, что не нужно переменная booleana. Прямо condici и # 243; n if он смог пойти в while. –  Dev. Joel 27.10.2016, 17:00
  • 2
    @Dev. Джоэл С и # 237; как ты говоришь podr и # 237; который я нужно сделать прямо (и лучше), но я сделал это экспертом и # 237; для того, чтобы он смог сравнивать с Ваш c и # 243; я говорю и видеть различие. –  Francisco Romero 27.10.2016, 17:18

Ты можешь спрашивать у него, что tambiГ©n все те nГєmeros он хочет выдать и сделать один For или Do While, я использовал cГіdigo @Error404 , так как он был хорошо выдвинут, но только меняя До Виле на for

int contador = 0;
boolean esUnNumeroValidoF = false;
System.out.println("¿Cúantos números quieres comprobar?");
contador = scanner.nextInt();

for(int i = 0; i < contador; i++){
 System.out.println("Introduce el número 1");
  int numero = scanner.nextInt();

  esunNumeroValidoF = numero < 0;

}
2
ответ дан 24.11.2019, 12:53
  • 1
    Спасибо, какие-то клавиши клавиатуры - слишком твердые jaja –  rencinas 27.10.2016, 13:48
  • 2
    Спасибо за называние меня. Однако я вижу неудачу в тебе c и # 243; я говорю. do-while будет реализовывать это (в случае моего ответа) до тех пор, пока он не найдет один n и # 250; морской окунь v и # 225; lido и в этом моменте saldr и # 225; цикла. В твоем случае ты подтверждаешь, если n и # 250; морской окунь - v и # 225; lido, но если ты поместил, что был подтвержден три раза, если во втором iteraci и # 243; n n и # 250; морской окунь, которого он вводит, - v и # 225; lido, будешь продолжать делать третий comprobaci и # 243; n. Tendr и # 237; эксперт, который должен делать одной двойной condici и # 243; n в твоем for для того, чтобы он вытек из цикла, когда он найдет стоимость v и # 225; lido. for(int i = 0; ((i < contador) && (esunNumeroValidoF == false)); i++) –  Francisco Romero 27.10.2016, 13:50
  • 3
    @Error404 я сделал это экспертом и # 237; потому что OP это поместил в Ваш вопрос: Кроме этого, я хочу, чтобы он вновь спрашивал снова, а именно, который не рожает condici и # 243; n. Скорее всего не объяснился хорошо, или мы не становимся понятными с вопросом, но идем, ответы он имеет несколько уже чтобы сравнивать –  rencinas 27.10.2016, 14:02
  • 4
    S и # 237; я tambi и # 233; n он и # 237; do это, но я понимаю, что он состоит в том, что он не рожает condici и # 243; n до тех пор, пока новый n и # 250; морской окунь est и # 233; верно. Я не вижу чувство, в которое comprobaci и # 243; n, имели уже правильную стоимость, продолжите просить новую стоимость. –  Francisco Romero 27.10.2016, 14:06
  • 5
    Привет, спасибо за отвечание!!! Прощать, если я не объяснился хорошо, но имею в виду в прежде всего, подтверждать, отрицательное число ли это, и если он отрицательный, что он вновь просил до тех пор, пока не вмешается целое положительное число. В любом случае, я попытаюсь, в которое я hab и # 233; is сочинение, снова большое спасибо;) –  kitkat 27.10.2016, 18:47

С while и переменной bool ошибка решается быстро:

Scanner scanner = new Scanner(System.in);

int error = 0;

while (error < 1)
{
    System.out.println("Introduce el número 1");
    boolean esUnNumeroValidoF = scanner.hasNextInt();

    System.out.println("Introduce el número 2");
    boolean esUnNumeroValidoC = scanner.hasNextInt();

    if (esUnNumeroValidoF) 
    {
        int numeroIntroducidoF = scanner.nextInt();
        scanner.nextLine();
        if (esUnNumeroValidoC) 
        {
            int numeroIntroducidoC = scanner.nextInt();
            scanner.nextLine();
            error = 1;//saldría del bucle, porque los dos números son correctos

        } 
        else 
        {
            System.out.println("Error, no has introducido un número natural. Prueba de nuevo\n");
        }

    } 
    else 
    {
        System.out.println("Error, no has introducido un número natural. Prueba de nuevo");
        scanner.nextLine();
    }

}


scanner.close();

Как заметка, они стоили бы тебе натуральные числа. А именно, негативы - целые числа, ты, что ты ищешь, дело в том, что они поместили натуральные числа.

0
ответ дан 24.11.2019, 12:53
  • 1
    У тебя есть raz и # 243; n, сейчас я это тестирую;) –  kitkat 27.10.2016, 18:48
  • 2
    @bpico и #191; qu и # 233; такой ты функция и # 243;? –  cluna 28.10.2016, 11:50
  • 3
    Я сделал то, что ты сказал мне, но " boolean error" он не заканчивается в if, когда он объявлен как false: ( –  kitkat 01.11.2016, 11:36
  • 4
    Скорее всего из-за того, что помещает while (error) вместо while (error == true). Я поместил это тебе с int и прекратился F и C, что были излишними. Посмотри qu и # 233; такой эксперт и # 237;:) –  cluna 02.11.2016, 11:43
  • 5
    Привет cluna. и #191; Ты попытался c и # 243; я говорю com твой и #250; ltimas изменения? Из-за которого я не думаю, что он составляет в Java. –  sstan 02.11.2016, 13:03

Теги

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