JAVA - błędy w programie

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;
}
}

JA
  • Rejestracja:ponad 22 lata
  • Ostatnio:ponad 2 lata
  • Postów:308
0

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

Kopiuj
while(true) {
  int liczba = [pobranie liczby];
  if(liczba >= 20 && liczba <= 30) {
    break;
  }
}
hauleth
Moderator
  • Rejestracja:ponad 17 lat
  • Ostatnio:dzień
0

Nie ładniej

Kopiuj
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

JA
  • Rejestracja:ponad 22 lata
  • Ostatnio:ponad 2 lata
  • Postów:308
0
Kopiuj
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();
	}        
}
bogdans
Moderator
  • Rejestracja:prawie 17 lat
  • Ostatnio:prawie 5 lat
0

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

Kopiuj
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;
    }
    }

To smutne, że głupcy są tak pewni siebie, a ludzie mądrzy - tak pełni wątpliwości. Bertrand Russell

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.