» »

[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č :8) Hvala :))
I do not agree with what you have to say,
but I'll defend to the death your right to say it.

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)

Zgodovina sprememb…

  • spremenilo: darkolord ()

c0dehunter ::

Hvala ti darkolord :8)
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.

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
I do not agree with what you have to say,
but I'll defend to the death your right to say it.

darkolord ::

Ne uporabljat try/catch za take zadeve. Rajši z IF stavki preveri vhodne podatke...

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.

c0dehunter ::

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

morbo ::

If (x > 100) throw new MuhastProfesorException();

catch ( MuhastProfesorException ex) { }

:D

(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

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. :(
I do not agree with what you have to say,
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.
I do not agree with what you have to say,
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:
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); :D

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 ()

morbo ::

Way to go! :))


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

[JAVA] HTTPS client

Oddelek: Programiranje
173058 (1788) peterv6i
»

Java skeniranje map in podmap

Oddelek: Programiranje
61072 (961) nightrage
»

[Java] Problem s Scanner-jem

Oddelek: Programiranje
92299 (2093) Zlatan
»

[Java] Urejanje baze z JTable

Oddelek: Programiranje
8946 (730) vonNeumann
»

[Naloga][Java] Ulomki

Oddelek: Programiranje
62543 (2391) SkIDiver

Več podobnih tem