JAVA - błędy w programie

0

Mam do napisania taki program: program, który wczyta od użytkownika dwie liczby całkowite. Pierwsza z nich powinna należeć do przedziału [0, 20] a druga do przedziału [30, 50]. Następnie program powinien
sprawdzić, czy druga liczba jest wielokrotnością pierwszej.

Program ogólnie działa jednak chciałem go zabezpieczyć przed tym że jak ktoś poda liczbę ze złego przedziału to program ma poprosić jeszcze raz o podanie prawidłowej liczby z tego przedziału.
Proszę o pomoc

Poniżej program.

import java.util.; import java.io.;
public class zad1 {
public static void main(String[]args)throws IOException{
System.out.println( wczytajWielokrotnosc());

    }
    static int wczytajCalkowita1(){
        Scanner sc = new Scanner(System.in);
        System.out.println(" Podaj dowolna liczbe calkowita [0,20]");
        int liczba1;
        liczba1 = sc.nextInt();
        if (liczba1 >=  0 && liczba1 <= 20)
        System.out.println( " Podana liczba to: " + liczba1 );
        else
        System.out.println( " Zla liczba " );                  
 
return liczba1;
}
static int wczytajCalkowita2(){
        Scanner sc = new Scanner(System.in);
        System.out.println(" Podaj dowolna liczbe calkowita [30,50]");
        int liczba2;
        liczba2 = sc.nextInt();
        if (liczba2 >=  30 && liczba2 <= 50)
        System.out.println( " Podana liczba to: " + liczba2 );
        else
        System.out.println( " Zla liczba " );                  
 
   return liczba2;

}
        static int wczytajWielokrotnosc(){
        int liczba1 = wczytajCalkowita1();
        int liczba2 = wczytajCalkowita2();
        if (liczba2 % liczba1 == 0){
               System.out.println( liczba2 + " jest wielokrotnoscia "+ liczba1 );
        }
        else
        {System.out.println( liczba2 + " nie jest wielokrotnością liczby " +  liczba1 );                  
 }

return 0;
}
}

0

Daj pobieranie liczby w pętli while np. tak:

while(true) {
  int liczba = [pobranie liczby];
  if(liczba >= 20 && liczba <= 30) {
    break;
  }
}
0

Nie ładniej

int liczba = 0;
do {
	liczba = [pobieranie liczby];
} while( liczba >= 20 && liczba <= 30 );
0

ale gdzie wstawić ten kod? bo wyrzuca mi błędy.
Udało mi się już zabezpieczyć program przed wpisywaniem liter zamiast cyfr, takim kodem

while(true){
System.out.println(" Podaj dowolna liczbe calkowita [30,50]");
try{
liczba2 = sc.nextInt();
break;
}
catch(InputMismatchException ex){
System.out.println( " Zła wartość " );
sc.nextLine();
}
}

tylko chciałem jeszcze tak jak wspominałem, zabezpieczyć przed podawaniem liczb nie spełniających zakresu.

Proszę o pomoc

0
while(true) {
	System.out.println(" Podaj dowolna liczbe calkowita [30,50]");
	try {
		liczba2 = sc.nextInt();
		if(liczba2 >= 30 && liczba2 <= 50) {
			break;
		} else {
			System.out.println("Podana wartość nie należy do przedziału");
			// lub
			// throw new InputMismatchException();
		}
	} catch(InputMismatchException e) {
		System.out.println( " Zła wartość " );
		sc.nextLine();
	}        
}
0

Pisanie dwóch niemal identycznych funkcji nie jest dobrym pomsyłem:

import java.util.*; import java.io.*;

public class zad1 {
        public static void main(String[]args)throws IOException{
                System.out.println( wczytajWielokrotnosc());
       
        }

    }
    static int wczytajCalkowita(int dolaGranica,int gornaGranica){
            Scanner sc = new Scanner(System.in);
            int liczba;
            while(true) {
               System.out.println(" Podaj dowolna liczbe calkowita ["+dolnaGranica+","+gornaGranica+"]");  
               try {
                   liczba = sc.nextInt();
                   if(liczba >= dolnaGranica && liczba <= gornaGranica) {
                        break;
                } else {
                        System.out.println("Podana wartość nie należy do przedziału");
                        // lub
                        // throw new InputMismatchException();
                }
              } 
             catch(InputMismatchException e) {
                System.out.println( " Zła wartość " );
                sc.nextLine();
            }       
       }
                  
       return liczba;

    }
            static int wczytajWielokrotnosc(){
            int liczba1 = wczytajCalkowita(0,20);
            int liczba2 = wczytajCalkowita(30,50);
            if (liczba2 % liczba1 == 0){
                   System.out.println( liczba2 + " jest wielokrotnoscia "+ liczba1 );
            }
            else
            {System.out.println( liczba2 + " nie jest wielokrotnością liczby " +  liczba1 );                  
     }
return 0;
    }
    }

1 użytkowników online, w tym zalogowanych: 0, gości: 1