[ casperns2 @ 20.12.2012. 22:37 ] @
Pozdrav, jos uvek se upoznavam sa javom i naisao sam na problem koji nikako da resim, ako neko ima malo vremena da mi da neki savet i pomognete. Trenutni kod radi kako zelim i sve funkcionise ali zelim da ubacim neke promene. Ukratko,u kodu gde su vrednosti INT , zelim da ubacim i odgovore koje imaju String vrednost.
A opet mi se javlja jos jedan problem ako i napravim odgovore koji imaju String vrednost, u daljem kodu ne mogu sa istim kodom porediti odgovore korisnika i tacne odgovore, jer je kod za INT vrednosti... nadam se da ce te razumeti sta mi pravi problem. Evo ga i ceo kod pa ce biti mozda jasnije sta zelim.....

Code:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;


public class Matematika extends java.applet.Applet {
    
    public static void main(String[] args) {
        try {
            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
            String kraj;
int rezultat=0;
            String[] pitanje = new String[10];
            pitanje[0] = ("Koliko je 5*6/3=? ?");
            pitanje[1] = ("Koliko minuta ima u 2 cela dana?");
            pitanje[2] = ("Koliko je 53-43?");
            pitanje[3] = ("Koliko je 5+5*4-2+7-4+8/2+5-29=? ");
            int[] odgovori = {10, 2880, 10, 6};
            
           
            do {
                System.out.println("Izaberi pitanje od 1 do 10?");
                int p = Integer.parseInt(br.readLine());
                System.out.println("Pitanje broj " + p + " je: " + pitanje[p - 1]);
                System.out.print("Odgovor je: ");
                int odgovor = Integer.parseInt(br.readLine());
                if (odgovor == odgovori[p - 1]){
             rezultat=rezultat+5;
             System.out.println("Bravo, odgovor je tacan!");}
      
                else
                 {System.out.println("Odgovor " + odgovor + " nije tacan.Tacno resenje je : " + odgovori[p - 1]);
               rezultat=rezultat-2; }

                    System.out.println("Zelite li novo pitanje? da/ne ?");
                kraj = br.readLine();
            } while (kraj.equals("da"));

            System.out.println("Kraj!Vas rezultat je: "+rezultat+" poena.");
        } catch (IOException e) {
            System.out.println("Greska: " + e.getMessage());
        }
    }
}
[ FooLControL @ 21.12.2012. 02:36 ] @
Konvertuj String u Integer, ako je exception, tj. ako ne moze da konvertuje znaci da nije broj i da odgovor nije tacan, ako ne baca exception, onda proveri sa tacnim odgovorom. Ako sam dobro razumeo sta si pitao.
[ bantu @ 21.12.2012. 07:14 ] @
Razmizšljaj u objektno orjentisanom duhu. Napravi novu klasu koja se zove Odgovor.
[ casperns2 @ 21.12.2012. 09:54 ] @
@Foolkontrol, malo cu googlati kasnije da vidim tacno kako bi se to radilo jer nisam bas najbolje upucen u te termine i metode koje si pomenuo.

@bantu , dobar savet da se treba razmisljati uvek u objektno orjentisanom duhu ali meni jos ne ide toliko dobro to razmisljanje da mogu resiti ovo. Cak i da napravim jednu ili dve klase sa pitanjima i odgovorima razlicitih vrednosti(int ili String), buni me kasnije kako kod provere rezultata gde uporedjujem odgovor i ono sto korisnik unese da funkcionise. Jer za int i String vrednosti nije isti kod prilikom poredjenja, tj. provere rezultata.

Da li je moguce da mozda napravim dve grupe ili klase odgovora . Kada korisnik izabere broj pitanja odredi se koja je klasa( da li sa int ili String vrednostima) i od zavisnosti koja je ,program ide na onaj deo programa gde je poredjenje za tu vrednost.

[ FooLControL @ 21.12.2012. 12:12 ] @
Nemoj praviti dve klase pitanja i odgovora jer nema smisla. Najbolje bi ti bilo da su ti tacni odgovori i odgovori koje unosi korisnik String, nema veze sto su brojevi. Ispitujes String sa Stringom metodom equals(). Uopste nemas potrebe za Integer-om jer ne koristis njegove operacije, sabiranje, oduzimanje itd.
[ bantu @ 21.12.2012. 14:03 ] @
Možda može ovako, probaj.
Code:

public class Odgovor {
    
    private Object t;

    public Odgovor(Object value) {
        this.t = value;
    }
    
    public Object getValue() {
        return t;
    }

    @Override
    public boolean equals(Object obj) {        
        if (!(obj instanceof Odgovor)) {
            return false;
        }        
        Odgovor o = (Odgovor) obj;        
        return t.equals(o.getValue());
    }    

}

Code:

public class Main {

    public static void main(String[] args) {
        
        Odgovor o = new Odgovor("Tacno");
        Odgovor o1 = new Odgovor("Necacno");
        Odgovor o2 = new Odgovor("Tacno");
        
        Odgovor o3 = new Odgovor(1);
        Odgovor o4 = new Odgovor(2);
        Odgovor o5 = new Odgovor(1);
        Odgovor o6 = new Odgovor("1");
        
        //false
        System.out.println(o.equals(o1));
        //true
        System.out.println(o.equals(o2));
        
        //false
        System.out.println(o3.equals(o4));
        //true
        System.out.println(o3.equals(o5));
        
        //false
        System.out.println(o.equals(o3));
        
        //false
        System.out.println(o3.equals(o6));

    }

}
[ casperns2 @ 21.12.2012. 14:47 ] @
@FooLControL, mislim da je za mene trenutno najlakse tako da uradim, samo da zamenim vrednost u string i promenim kod pri poredjenju za String vrednosti

@bantu hvala na pomoci, ovaj nacin mi je malo tezi ali sigurno cu pokusati i na ovaj nacin da uradim i da vidim kako sve funkcionise i sta je kako povezano radi kasnih komplikovanih zadataka i vezbanja. Nadam se da cu uklopiti sve kako treba.

Javim jesam li uspeo i na koji nacin.

Pozdrav
[ casperns2 @ 23.12.2012. 09:20 ] @
Resenje je bilo jako prosto, kao sto je rekao FooLControL , samo sam stavio vrednosti u String i resen problem.

Sada cu pokusati malo da nadogradim program, na primer da uvedem promenljivu koja ce uticati da kada korisnik izabere na pitanje broj 5, ne dobije uvek isto pitanje vec da se menjaju. Videcu koje mogucnosti postoje , na primer zavisno koji je minut na kompjuteru ili koji je sat, da pitanje koje izabere se sabere sa trenutnim brojem minuta koliko je na satu i tada bi se odredjeno pitanje nalazilo cesto pod brugim brojem, naravno vise pitanja bi stavio u niz.

Code:
System.out.println("Izaberi pitanje od 1 do 10?");
                int p = Integer.parseInt(br.readLine());
                System.out.println("Pitanje broj " + p + " je: " + pitanje[p - 1]);


gde bi umesto [p-1] stavio neku drugu formulu ili sta vec, uglavnom ako ne uspem preko googla da resim, javicu se.

Pozdrav!