Forum » Programiranje » [Android] Kaj metoda vrne?
[Android] Kaj metoda vrne?
draciel ::
mam to kodo ki izračuna določen rezultat, ki je vpisan v formo. To je pač metoda, ki vrne int. Kaj metoda vrne, če recimo ne vpišemo v formo nič ( se pravi da vrže exception ). Kaj se zgodi če kličem to metodo iz druge metode?
public int calculate() { enterHPoints = (EditText) findViewById(R.id.EnterHonorPoints); try { entered = Integer.parseInt(enterHPoints.getText().toString()); } catch (NumberFormatException e) { // TODO Auto-generated catch block e.printStackTrace(); } result = (int) (entered / x); return result; }
draciel ::
hmm..
ok moj problem:
Imam metodo onClick, ter imam metodo calculate ki jo vidite lahko zgoraj. Če gre vse prav, calculate metoda vrne int. Nato imam v onClick metodi, še nekaj if stavkov, ki preverijo:
-Če je int result manjši od 375 vrne napako
-Če je int večji od 4000 vrne napako
-Če je int vmes med 375 ter 4000, program lepo izračuna.
Problem nastane, če user ne vpiše v polje nič in da samo izračunaj. Nato program vrže NumberFormatException - logično seveda.
Kar bi rad dosegel je to, da bi ta exception dal v try catch blok ter če user ne vpiše v polje nič, mu bi samo napisalo da mora vnesti eno številko.
Če naredim tako:
In program preizkusim, mi vrže ta if stavek iz onClick metode:
Torej kako oz. kje uporabiti
Upam , da sem dovolj razločno napisal kaj me muči :D
ok moj problem:
Imam metodo onClick, ter imam metodo calculate ki jo vidite lahko zgoraj. Če gre vse prav, calculate metoda vrne int. Nato imam v onClick metodi, še nekaj if stavkov, ki preverijo:
-Če je int result manjši od 375 vrne napako
-Če je int večji od 4000 vrne napako
-Če je int vmes med 375 ter 4000, program lepo izračuna.
Problem nastane, če user ne vpiše v polje nič in da samo izračunaj. Nato program vrže NumberFormatException - logično seveda.
Kar bi rad dosegel je to, da bi ta exception dal v try catch blok ter če user ne vpiše v polje nič, mu bi samo napisalo da mora vnesti eno številko.
Če naredim tako:
try { enterHPoints = (EditText) findViewById(R.id.EnterHonorPoints); entered = Integer.parseInt(enterHPoints.getText().toString()); } catch (NumberFormatException e) { // TODO Auto-generated catch block e.printStackTrace(); }
In program preizkusim, mi vrže ta if stavek iz onClick metode:
if(result<375) { display.setTextColor(getResources().getColor(R.color.red)); display.setText("Can't convert less then 375 HP"); }
Torej kako oz. kje uporabiti
display.setText(...), da bo uporabniku lepo napisalo, da ni vnesel nobenega števila in naj poskusi ponovno?
Upam , da sem dovolj razločno napisal kaj me muči :D
Zgodovina sprememb…
- spremenil: draciel ()
icurk ::
Najprej nad vnosno polje za številke postavi en textview, katerega visibility naj bo na začetko gone. Potem pa v try bloku negreš takoj parsat v int, ampak samo potegneš ven string. Potem preveriš če je ta string enak "" in če je, postaviš visibility zgornjega textviewa na visible in to je to. Praktično pa tukaj sploh ni potrebe po try bloku..
TextView tv = (TextView) findViewById(R.id.opomba); tv.setVisibility(View.GONE); EditText enterHPoints = (EditText) findViewById(R.id.EnterHonorPoints); String entered = enterHPoints.getText().toString(); if (entered.equals("")) { tv.setVisibility(View.VISIBLE); } else { //tukaj greš pa pretvarjat v int itd. }
Senitel ::
Ja na pametnem mestu bo treba ujet exception in reagirat nanj ane. Če ti parseInt rukne exception, ti pa veselo jurišaš naprej...
draciel ::
aha. bom premislil o tvoji metodi icurk. Hvala..
sicer stvar sem rešil tako da mi calculate() metoda vrže throws in nato exepction.
Nato pa v drugi metodi ulovim to exception s try catch ... in stvar dela. Stvar je da sem se premalo navadu od throws pa try, catch blok. Ok sedaj vem in bom vedel za naslednjič :D hvala
sicer stvar sem rešil tako da mi calculate() metoda vrže throws in nato exepction.
Nato pa v drugi metodi ulovim to exception s try catch ... in stvar dela. Stvar je da sem se premalo navadu od throws pa try, catch blok. Ok sedaj vem in bom vedel za naslednjič :D hvala
virusss8 ::
hm.. zakaj ne bi preprosto v catch bloku dodal en toast izpis?
Nekaj v tem smislu... to se da na ogromno načinov rešiti
try { enterHPoints = (EditText) findViewById(R.id.EnterHonorPoints); if(enterHPoints.getText.toString().equals(""){ Toast.makeText(context, text, duration).show(); } entered = Integer.parseInt(enterHPoints.getText().toString()); } catch (NumberFormatException e) { // TODO Auto-generated catch block Toast.makeText(context, text, duration).show(); }
Nekaj v tem smislu... to se da na ogromno načinov rešiti
Tux is my best pal!
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | Nadaljuj Javanski programOddelek: Programiranje | 1727 (1128) | nightrage |
» | Android - ZačetnikOddelek: Programiranje | 1781 (1106) | hurlimannxt |
» | [android] crashOddelek: Programiranje | 1338 (1147) | messi |
» | [JAVA] zaustavitev niti (threadov)Oddelek: Programiranje | 3172 (3172) | morbo |
» | read integer v javiOddelek: Programiranje | 1376 (1277) | kopernik |