Výnimky (vlastne) - JAVA - pomoc

Programovacie jazyky, rady, poradňa...
Zlatohlavok
Light Expert
Light Expert
Príspevky: 40
Registrovaný: 24 nov 2010, 19:38

Výnimky (vlastne) - JAVA - pomoc

Príspevok od používateľa Zlatohlavok »

Ahojte, robím jeden program a potreboval by som ošetriť vstupy.

Scanner citac = new Scanner(System.in);

moznosti = citac.nextInt();

Potrebujem ošetriť to, že keď zadam niečo iné ako 1 alebo 2 alebo 3, aby mi vypisalo zly vstup (to znamená napr 6,k,x é...). písmeno aby to vypísalo.

To to načítanie mám v jednej triede, chcem si spraviť novú tredu kde budem mať výnimky a odtial si ich volať.

Vedeli by ste mi s tým pomôcť?

Ďakujem :)
Baseilos
Light Expert
Light Expert
Príspevky: 57
Registrovaný: 01 máj 2011, 2:15

Re: Výnimky (vlastne) - JAVA - pomoc

Príspevok od používateľa Baseilos »

Nenapisal si ako vyzera ta tvoja trieda. Neslo by to jednoducho urobit takto

Kód: Vybrať všetko

Scanner citac = new Scanner(System.in);
int moznost = -1i;
bool prvykrat = true;
do {
   prvykrat = false;
   if (!prvykrat) System.out.println("Chybny vstup\n");
   System.out.print("Zadaj moznost: ");
   try {
        moznost= citac.nextInt();
   } catch (InputMismatchException e) {
       moznost = -1;
       continue;
   } catch (Exception e) {
      break;
   }
} while (moznost < 0 || moznost > 3);

Zlatohlavok
Light Expert
Light Expert
Príspevky: 40
Registrovaný: 24 nov 2010, 19:38

Re: Výnimky (vlastne) - JAVA - pomoc

Príspevok od používateľa Zlatohlavok »

Aha vyskúšam, ja to mám takto teraz:


Tuto mam nacitanie s nejakym osetrenim, ale nejde mi to.

Kód: Vybrať všetko

 
	      String vstup1 = citac.nextLine();
	      char firstChar = vstup1.charAt(0);
	    
	       vstup1 = (int) firstChar;
		try{	
			
			
			if (vstup < 48 || vstup > 50)        //1 je v ASCII 48, 3 je v ASCII 50,       takže ak je zadane cislo mencie ako 1 alebo je väčšie ako 3 tak chyba 
				
			if (vstup > 97 && vstup < 122)    // tu zase kontroluje ci je vstup pismeno, a je v ASCII 97 a z je v ASCII 122
				
			
			
			throw new Vynimky(1);
		}
		catch (Vynimky e){
			System.out.println("chyba"+e);
		}

A tuto mám triedu Vynimky v ktorej mam

Kód: Vybrať všetko

public class Vynimky extends Exception{

	public Vynimky(int i){
		
		if(i==1)
			System.out.println("Zla volba");
		
	}
	
}



EDIT:

skusil som tvoj kod a funguje, ale ked zadam pismeno tak to cyklí donekovezna, ze zla volba
A keď to skompilujem prvy krat tak mi vypisuje automaticky

Zadaj moznost:
Chybny vstup

Zadaj moznost:
Baseilos
Light Expert
Light Expert
Príspevky: 57
Registrovaný: 01 máj 2011, 2:15

Re: Výnimky (vlastne) - JAVA - pomoc

Príspevok od používateľa Baseilos »

Pokial nechces aby to pri nacitani pismena stale pytalo nanovo, tak v zmen continue na break, alebo tam urob nejake pocitadlo zlych vstupov.

Kód: Vybrať všetko

catch (InputMismatchException e) {
       moznost = -1;
       continue;
}
Zlatohlavok
Light Expert
Light Expert
Príspevky: 40
Registrovaný: 24 nov 2010, 19:38

Re: Výnimky (vlastne) - JAVA - pomoc

Príspevok od používateľa Zlatohlavok »

Ee ide o to, že ked zadam pismeno tak mi to zacykli a pise dokola:

Zadaj moznost: Chybny vstup

Zadaj moznost: Chybny vstup

Zadaj moznost: Chybny vstup

Zadaj moznost: Chybny vstup

Zadaj moznost: Chybny vstup

Zadaj moznost: Chybny vstup

Zadaj moznost: Chybny vstup

Zadaj moznost: Chybny vstup

Zadaj moznost: Chybny vstup

Zadaj moznost: Chybny vstup
Baseilos
Light Expert
Light Expert
Príspevky: 57
Registrovaný: 01 máj 2011, 2:15

Re: Výnimky (vlastne) - JAVA - pomoc

Príspevok od používateľa Baseilos »

Pridaj pred continue

Kód: Vybrať všetko

catch (InputMismatchException e) {
       moznost = -1;
       continue;
   }

Kód: Vybrať všetko

citac.next();
Zlatohlavok
Light Expert
Light Expert
Príspevky: 40
Registrovaný: 24 nov 2010, 19:38

Re: Výnimky (vlastne) - JAVA - pomoc

Príspevok od používateľa Zlatohlavok »

Parada :) Ďakujem:)

EDIT:

Ešte sa chcem spýtať, keďže ja dosť načítavam takto vstupy v mojom programe, nebolo by prehladnejšie tak ako som to chcel spraviť, že budem mať jednu triedu s názvom Výnimky a odtial si to volať? Nedalo by sa to tak nejako spraviť? Ide mi o prehladnosť kódu pretože takáto jedna výnimka mi zaberá cca 20 riadkov kodu a keď to mám použiť takto 10x tak je to už dosť a stráca sa prehladnosť.

Diky
skkiller2
Medium Expert
Medium Expert
Používateľov profilový obrázok
Príspevky: 95
Registrovaný: 06 dec 2008, 11:23
Kontaktovať používateľa:

Re: Výnimky (vlastne) - JAVA - pomoc

Príspevok od používateľa skkiller2 »

vseobecne vynimky sa maju pouzivat na neocakavane stavy(chyba pripojenia, plny disk, etc..), nespravny uzivatelsky vstup je stav, ktory mozes ocakavat.
zober si ze vynimka je objekt ktory sa musi vytvorit, vyvolat.. zbytocne neefektivne
Ale ak sa len ucis tak je to v klidku.. :wink:
http://stackoverflow.com/questions/1614 ... -exception

Toto co som napisal plati skor pre c# ako sa pozeram v jave sa to normalne pouziva, sorry za zmatocne info :)
Napísať odpoveď