Program "idioto odporny".

0

Jak napisać program który najpierw sprawdza czy podany przez użytkownika znak jest liczbą, jeżeli nie cofka do początku programu ?

Próbowałem:

 
if (A == String){
...

itd.
Ale oczywiście nie działa, myślałem jeszcze nad else itp. ale nie przychodzi mi nic konstruktywnego do głowy. Pomyślałem więc, że może to być odgórnie ustalona formuła na tego typu operację i chcę ją poznać ;]

Myślałem jeszcze nad przerobieniem takiego rozwiązania:

 
if ((Z > 10) || (Z < 1)) {
  System.err.println("Zle dane. Uruchom program ponownie");
  System.exit(0); // zablokowanie programu- zmienne niespełniające warunków 
		}   

Tylko warunki musiały by być oczywiście inne ale to i tak mnie nie satysfakcjonuje bo chcę automatyczne ponowne uruchomienie programu.

Dodam jeszcze, że korzystam z:

 
import java.util.Scanner;

...

try (Scanner scanner = new Scanner(System.in)) {
		System.out.println("Podaj liczbę: "); A = scanner.nextInt();

Nie mogłem znaleźć na forum- pewnie za proste :D

0

Może tak

Scanner scanner=...
boolean ok=false;
while(!ok)
{
    try
    {
        System.out.println("Podaj liczbę: "); 
        A = scanner.nextInt();
        ok=true;
    }
    catch(Exception e)
    {
    }
}
0

Do ifa daj po prostu instrukcje cin.fail() i po klopocie

0

To wygląda dobrze ale są pewne problemy:

 
import java.util.Scanner;
public class dwa{
	public static void main(String [] args){
	 
	 int a;
	 
	 Scanner scanner=new Scanner(System.in);
	boolean ok=false;
	while(!ok)
{
	 
	 try {
		System.out.println("Podaj liczbę od 1 do 10: "); 
		a = scanner.nextInt();
		ok=true;
		}
		catch(Exception e)
    {
    }
		
		if (a < 5){
			System.out.println("Podales liczbe mniejsza od 5.");
		}
		
		if (a > 5){
			System.out.println("Podales liczbe większa od 5.");
		}
		if (a == 5){
			System.out.println("Podales liczbe rowna od 5.");
		}
		
		}
	}
	}

To jest cały kod. Przy jego kompilacji wyskakuje błąd 21 mówiący o tym, że "a" nie zostało odnalezione, zdefiniowane.
A kiedy usunę pętle if, przy kompilacji nie ma żadnego problemu ale przy wpisaniu litery pojawia się niezliczenie wiele "Podaj liczbę: " cały czas narastając ;)

A przy całkowicie skopiowanym kodzie jest tak samo:

 
import java.util.Scanner;
public class dw{
	public static void main(String [] args){
	
	int A;
	
	Scanner scanner=new Scanner(System.in);
boolean ok=false;
while(!ok)
{
    try
    {
        System.out.println("Podaj liczbę: "); 
        A = scanner.nextInt();
        ok=true;
    }
    catch(Exception e)
    {
    }
	
	if (a < 5){
			System.out.println("Podales liczbe mniejsza od 5.");
		}
}
}
}

Co zrobić ? ;)

0

Java jest case-sensitive, zmienne a i A, to dwie różne zmienne.

import java.util.Scanner;
public class dw
{
    public static void main(String [] args)
    {
 
        int A=0;
        boolean firstTime=true;
 
        Scanner scanner;
        boolean ok=false;
        while(!ok)
        {
            try
            {
                if(firstTime)
                {
                    System.out.println("Podaj liczbę: ");
                    firstTime=false;
                }
                scanner=new Scanner(System.in);
                A = scanner.nextInt();
                ok=true;        
            }
            catch(Exception e)
            {
            }
        }
        if (A < 5)
        {
            System.out.println("Podales liczbe mniejsza od 5.");
        }
    }
}

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