[ maxmagnus2 @ 26.06.2007. 09:16 ] @
Poz,
hocu da iz TextFielda-a uzmem podatak i proverim da li je
on int (Integer) i prosledim ga ako jeste.
Ovo iz nekih razloga ne radi jer prijavi gresku da se ne stize do tog dela.

kod:
public boolean Proveri_Ocenu(JTextField TF1){
int pomocni_int;
try{
pomocni_int=Integer.parseInt(TF1.getSelectedText());
}
catch(NumberFormatException e){
System.out.println(JTF1.getText()); // ovo vraca null
System.out.println("ne moze da se prihvati ocena");
}
return true;
}//Proveri_Ocenu

2.Koja je razlika izmedju int i Integer? Kako se to odrazava na konverziju?
Unapred hvala
MM
[ Toxter @ 26.06.2007. 09:43 ] @
Umesto: TF1.getSelectedText()
koristi: TF1.getText()

Nemas nista selektovano pa ti zato vraca null.
[ Java Beograd @ 26.06.2007. 10:34 ] @
int je primitiva
Integer je klasa, tj. objekat u toku izršavanja.

Uzgred, lepše bi bilo da si napisao funkciju:

Code:
public boolean proveriOcenu(String s)


a ne

Code:
public boolean Proveri_Ocenu(JTextField TF1)


Ovo je neka vrsta utility funkcija, pa swing komponeneta koja se dobija kao parametar nekako ne spada u to društvo.

<AKADEMSKA RASPRAVA>
Više puta sam već pisao da se
Code:
try {}
catch{} 
finaly{}
struktura ne treba koristiti za kontrolu toka programa. Tj. treba se koristiti za hvatanje izuzetaka u pravom smislu reči. Ipak, ovde je to nemoguće. Stoga, mislim da je funkcija: public static boolean isInteger(String s) nad Integer klasom neophodna ako se želi održati duh Java programa.
</AKADEMSKA RASPRAVA>
[ maxmagnus2 @ 26.06.2007. 20:22 ] @
Hmmm,
nije mi najjasnije...
Daj mi primer kako bi izgledala cela isInteger f-ja
Mislim, nije mi jasna sustinska razlika izmedju dve varijante.
(naravno cilj mi je da sto cistije pisem zato to i pitam)

*************************************************************
Da... getSelected je nekako zaostao iako sam ga provalio i izmenio ... cudno...
[ Java Beograd @ 27.06.2007. 13:55 ] @
Pa kao što rekoh, try - catch je prilično "skupa" operacija. Posebno izbacivanje samog excption-a. U primeru koji je naveden, ta struktura je iskorišćena kao da se radi of if - then struturi.

Ili evo malo slikovitije.


Good

Code:

double a;
double b;
double result;
...

if (b!=0) {
    result = a/b; 
} else {
    System.out.println("b is zero");
}


Bad
Code:


double a;
double b;
double result;
...

try {
    result = a/b; 
} catch (Exception e) {
    System.out.println("b is zero");
}



Praktično, za laika i laičke aplikacije konačni ishod je isti - korisnik će dobiti poruku ako je b=0, ili će se izvršiti deljenje ako b!=0. Ali kao što rekoh ovo je upravo primer gde je korisnik primoran da koristi try - catch za kontrolu toka programa.