Сравнение двух целых чисел, чтобы проверить, больше ли второе целое - PullRequest
0 голосов
/ 09 марта 2019

Я пытаюсь, чтобы пользователь ввел два целых числа, где второе целое число должно быть больше.Это должно быть завершено с проверкой.Валидация, кажется, работает, но когда второе целое число вводится независимо от того, является ли int меньше или было исправлено, первый ввод печатается.

import java.util.Scanner;
public class Comparing
{
 public static void main(String[] args)
 {
   Scanner in = new Scanner(System.in);



 //Entering Integers where int 2 is greater with validation

       int i1;
       while(true){
         System.out.print("Enter the first integer");
        if(in.hasNextInt()){
          i1 = in.nextInt();
          break;
        }else{
          System.out.println("Invalid Integer");
          String Invalid = in.next(); //Meant to catch any non int types
        }
      }
      int i2;
      while(true){
         System.out.print("Enter a second larger integer");
       if(in.hasNextBigInteger()){
         i2 = in.nextInt();          
        if(i2 > i1){
          break;
        }else{
           System.out.println("Invalid Integer");
           System.out.println("Enter a second LARGER integer");
           String Invalid2 = in.next();

        }
        break;
        }else{
          System.out.println("Invalid Integer");
          System.out.println("Enter a second LARGER integer");
          String Invalid2 = in.next();  
        }    
      }  



//Odd number calculation between i1 and i2
   int oddsum = 0;
   int odd = 0;
   for(odd = i1;odd <= i2; odd++){
     if(odd%2 != 0){
       oddsum = odd + oddsum;
     }
   }
   System.out.println("The sum of odd integers between " + i1 + " and " + i2 + ": " + oddsum);

1 Ответ

1 голос
/ 09 марта 2019

Вы должны удалить эти две строки:

int i2;
while(true){
    System.out.print("Enter a second larger integer");
    if(in.hasNextBigInteger()){
        i2 = in.nextInt();
        if(i2 > i1){
            break;
        }else{
            System.out.println("Invalid Integer");
            System.out.println("Enter a second LARGER integer");
            String Invalid = in.next(); // <----- this line
        }
        break; // <------------ and this line
    }else{
        System.out.println("Invalid Integer");
        System.out.println("Enter a second LARGER integer");
        String Invalid2 = in.next();
    }
}

Вам не нужно in.next потреблять недопустимое целое число, потому что nextInt будет потреблять его (в отличие от целого числа в неправильном формате)!

Вы также не выходите из цикла. Вы хотите, чтобы цикл снова зациклился, чтобы пользователь ввел правильный номер.

Вам также не нужны объявления String Invalid. Достаточно просто сделать in.next();.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...