Forum » Programiranje » [JAVA] Simpl problem z IF - ELSE stavkom :)
[JAVA] Simpl problem z IF - ELSE stavkom :)

c0dehunter ::
Bom najprej pripel del programa, ki me jezi:
-----------------------------
System.out.println("Izpis katere osebe zelis videti? (zaporedna stevilka)");
System.out.println("Ce vpises stevilo 0, bo program izpisal vse osebe.");
int st=vhod.nextInt();
if(st==0){
for(int i=0; i < n; i++){
System.out.println("Trije razlicni izpisi za osebo stevilka " +(i+1));
System.out.println();
ljudje[i].izpisIP();
System.out.println();
ljudje[i].izpisOsnovno();
System.out.println();
ljudje[i].izpis();
}
else if{
System.out.println("Trije razlicni izpisi za osebo stevilka " +st);
ljudje[st-1].izpisIP();
System.out.println();
ljudje[st-1].izpisOsnovno;
System.out.println();
ljudje[st-1].izpis();
}
}
-----------------------------
Zanima me, zakaj mi tole noče delat? Izpiše se namreč napaka "prva.java:38: 'else' without 'if' ".
Sigurno je neka banalna napaka, ki pa je ne morem odkrit. Najprej sem poskusil samo z If - else, potem pa še z If- else if, pa vseeno nič.
Prosim za pomoč
Hvala
-----------------------------
System.out.println("Izpis katere osebe zelis videti? (zaporedna stevilka)");
System.out.println("Ce vpises stevilo 0, bo program izpisal vse osebe.");
int st=vhod.nextInt();
if(st==0){
for(int i=0; i < n; i++){
System.out.println("Trije razlicni izpisi za osebo stevilka " +(i+1));
System.out.println();
ljudje[i].izpisIP();
System.out.println();
ljudje[i].izpisOsnovno();
System.out.println();
ljudje[i].izpis();
}
else if{
System.out.println("Trije razlicni izpisi za osebo stevilka " +st);
ljudje[st-1].izpisIP();
System.out.println();
ljudje[st-1].izpisOsnovno;
System.out.println();
ljudje[st-1].izpis();
}
}
-----------------------------
Zanima me, zakaj mi tole noče delat? Izpiše se namreč napaka "prva.java:38: 'else' without 'if' ".
Sigurno je neka banalna napaka, ki pa je ne morem odkrit. Najprej sem poskusil samo z If - else, potem pa še z If- else if, pa vseeno nič.
Prosim za pomoč


I do not agree with what you have to say,
but I'll defend to the death your right to say it.
but I'll defend to the death your right to say it.
- spremenilo: c0dehunter ()

darkolord ::
Takole:
if(st==0){
for(int i=0; i < n; i++){
System.out.println("Trije razlicni izpisi za osebo stevilka " +(i+1));
System.out.println();
ljudje[i].izpisIP();
System.out.println();
ljudje[i].izpisOsnovno();
System.out.println();
ljudje[i].izpis();
}
}
else {
System.out.println("Trije razlicni izpisi za osebo stevilka " +st);
ljudje[st-1].izpisIP();
System.out.println();
ljudje[st-1].izpisOsnovno;
System.out.println();
ljudje[st-1].izpis();
}
Edit: (else)
if(st==0){
for(int i=0; i < n; i++){
System.out.println("Trije razlicni izpisi za osebo stevilka " +(i+1));
System.out.println();
ljudje[i].izpisIP();
System.out.println();
ljudje[i].izpisOsnovno();
System.out.println();
ljudje[i].izpis();
}
}
else {
System.out.println("Trije razlicni izpisi za osebo stevilka " +st);
ljudje[st-1].izpisIP();
System.out.println();
ljudje[st-1].izpisOsnovno;
System.out.println();
ljudje[st-1].izpis();
}
Edit: (else)
Zgodovina sprememb…
- spremenilo: darkolord ()

c0dehunter ::
Hvala ti darkolord
Pozabil sem zaključiti prvi If. Pa potem ni Else if ampak samo Else.
Lep pozdrav in še enkrat hvala, jaz si ne bi tole prišu gor

Pozabil sem zaključiti prvi If. Pa potem ni Else if ampak samo Else.
Lep pozdrav in še enkrat hvala, jaz si ne bi tole prišu gor

I do not agree with what you have to say,
but I'll defend to the death your right to say it.
but I'll defend to the death your right to say it.

c0dehunter ::
Še eno vprašanje, da ne bom odpiral nove teme:
uporabnik mora vnesti številko od 1 do 100. Ker je uporabnik muhast in bi lahko vnesel kako drugo številko izven tega ranga, bi uporabil try- catch stavek. Kako?
try{
st=vhod.nextInt();
}
catch(Exception e){
System.out.prinltn(e);
}
Kaj še pride vmes med try {.....}? Je treba vmes uporabit še kakšen IF stavek? Sem prebral Java Sun Tutorial, sam tam je res vse skupaj nerazumljivo.
Hvala
uporabnik mora vnesti številko od 1 do 100. Ker je uporabnik muhast in bi lahko vnesel kako drugo številko izven tega ranga, bi uporabil try- catch stavek. Kako?
try{
st=vhod.nextInt();
}
catch(Exception e){
System.out.prinltn(e);
}
Kaj še pride vmes med try {.....}? Je treba vmes uporabit še kakšen IF stavek? Sem prebral Java Sun Tutorial, sam tam je res vse skupaj nerazumljivo.
Hvala
I do not agree with what you have to say,
but I'll defend to the death your right to say it.
but I'll defend to the death your right to say it.

c0dehunter ::
Darkolord, verjemi, tut js bi raje videl, da bi to rešil z IF; problem pa je, ker je profesor naročil, da je treba z try/catch, da vidimo uporabnost.
I do not agree with what you have to say,
but I'll defend to the death your right to say it.
but I'll defend to the death your right to say it.

c0dehunter ::
Anyone?

I do not agree with what you have to say,
but I'll defend to the death your right to say it.
but I'll defend to the death your right to say it.

morbo ::
If (x > 100) throw new MuhastProfesorException();
catch ( MuhastProfesorException ex) { }
(BTW; preverjanje podatkov z lovljenjem izjem se res ne more kategorizirat kot 'uporabnost', kvečjemu kot primer kako ne pisat kode)
catch ( MuhastProfesorException ex) { }

(BTW; preverjanje podatkov z lovljenjem izjem se res ne more kategorizirat kot 'uporabnost', kvečjemu kot primer kako ne pisat kode)

BigFoot ::
Ja en primer tipične bedarije, ki jih učijo naši faksi. Potem pa ven pridejo ljudje z diplomami, ki nimajo pojma o tem kako se programira.
LG 77CX OLED TV; Marantz SR6010 7.2: 5x Focal Sib, 2x Focal Cub, 2x Focal
Little Bird; PS5, Xbox Series X, PS4 Pro, Xbox One, PS3, Vero 4K, Samsung
UBD K8500 4K UHD, Philips BDP2180/12
Little Bird; PS5, Xbox Series X, PS4 Pro, Xbox One, PS3, Vero 4K, Samsung
UBD K8500 4K UHD, Philips BDP2180/12

c0dehunter ::
Ok hvala
BigFoot, to učijo na srednji šoli in ja, včasih res bedarije. Profesorji pa... ne bom se bodel z njim(i), ker nima smisla. Do what you were told to do.

BigFoot, to učijo na srednji šoli in ja, včasih res bedarije. Profesorji pa... ne bom se bodel z njim(i), ker nima smisla. Do what you were told to do.

I do not agree with what you have to say,
but I'll defend to the death your right to say it.
but I'll defend to the death your right to say it.

morbo ::
Nesmiselno je prožit in lovit izjemo v isti metodi. Ponavadi se naredi tako da izjemo spustiš nazaj po klicnem skladu, tako da metodi dodaš 'klavzulo' throws SomeException in jo ob nekem pogoju sprožiš s throw new SomeException. Kdor kliče to metodo je potem primoran obravnavat možnost izjeme. Pravzaprav nisem štekal cilja naloge (oz. tistega da ne smeš z if) - morda je le to da sprožiš izjemo v primeru nepravilnega vnosa? Brez preverjanja z if pa itak ne moreš, razen seveda če na kak obskuren način izsiliš runtime izjemo.


c0dehunter ::
morbo, ti si že bolj majstor v tem, mi smo pa obravnavali try/catch šele par dni nazaj. Profesor ni razložil nič, vse kar je naredil je to, da je na tablo napisal sintakso
try{.....}
catch(.....)
{......}
in za primer uporabe dal
try{ y=a/x; }
catch( Exception e)
{ System.out.println(e); }
Se pravi v primeru deljenja z nič, se izpiše napaka.
Primer za nalogo, ki si ga dal ti, ni take oblike, zato me mal bega, sploh ker še ne vem kaj je throw.
try{.....}
catch(.....)
{......}
in za primer uporabe dal
try{ y=a/x; }
catch( Exception e)
{ System.out.println(e); }
Se pravi v primeru deljenja z nič, se izpiše napaka.
Primer za nalogo, ki si ga dal ti, ni take oblike, zato me mal bega, sploh ker še ne vem kaj je throw.
I do not agree with what you have to say,
but I'll defend to the death your right to say it.
but I'll defend to the death your right to say it.

darkolord ::
Do catch pride samo v primeru, da se pojavi exception (na primer če deliš z nič, česar se v nobenem primeru ne da)... Če pa ti želiš, da se exception sproži takrat, ko na primer eno število ne ustreza določenemu pogoju, ga moraš "ročno" sprožiti s throw

morbo ::
Če niste obravnavali throw ukaza, potem ne vem kaj si prof razlaga pod 'rešit problem s try catch, namesto if'. Njegov primer je sprožil nepreverjeno izjemo (runtime exception), kar pa je bistveno težje doseči v primeru podajanja števil na intervalu od 1 do 100. Dalo bi se, ampak za napisat kaj tako ogabnega se moraš že potrudit
Edino kar mi pride na pamet vsebuje ukaz throw:
...kar je precej nesmiselno. Pravilno bi bilo:
Seveda mora bit potem koda ki kliče metodo beri(), v try/catch bloku. Throws napove kakšne izjeme lahko proži metoda, throw pa jo ob pogoju dejansko sproži.

public void beri() { try { int x = vhod.nextInt(); if (x < 1 || x > 100) { throw new Exception("stevilo je zunaj intervala 1 - 100"); } } catch (Exception ex) { System.out.println(ex); } }
...kar je precej nesmiselno. Pravilno bi bilo:
public void beri() throws Exception { int x = vhod.nextInt(); if (x < 1 || x > 100) { throw new Exception("stevilo je zunaj intervala 1 - 100"); } }
Seveda mora bit potem koda ki kliče metodo beri(), v try/catch bloku. Throws napove kakšne izjeme lahko proži metoda, throw pa jo ob pogoju dejansko sproži.

Genetic ::
Dalo bi se, ampak za napisat kaj tako ogabnega se moraš že potrudit
Kot npr:
y = 1/((int)Math.signum((N-1)*(100-N)) + 1);

kjer je N vneseno stevilo. Ce je zunaj intervala [1,100], vrne signum -1. Pristejes 1, dobis 0, s tem delis, ...
Zgodovina sprememb…
- spremenil: Genetic ()
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | [JAVA] HTTPS clientOddelek: Programiranje | 3201 (1931) | peterv6i |
» | Java skeniranje map in podmapOddelek: Programiranje | 1183 (1072) | nightrage |
» | [Java] Problem s Scanner-jemOddelek: Programiranje | 2507 (2301) | Zlatan |
» | [Java] Urejanje baze z JTableOddelek: Programiranje | 1035 (819) | vonNeumann |
» | [Naloga][Java] UlomkiOddelek: Programiranje | 2734 (2582) | SkIDiver |