Poslao: 10 Mar 2015 10:53
|
offline
- sadamceizle
- Novi MyCity građanin
- Pridružio: 18 Dec 2009
- Poruke: 14
|
Napisano: 10 Mar 2015 10:43
Cao svima,
Resio sam da pocnem da ucim pod stare dane i nasao neki po meni ok tutorijal.
Pocetnik sam pa se ne uzbudjute mnogo.
Naisao sam na jedan problem koji me vec dva dana muci.
Nikako da uspesno napisem kod da racuna sumu i prosek kolona u tablici.
Za red je lako al za kolonu muke zive.
package je******;
import java.util.Random;
public class Trabunjanje {
public static void main(String[] args) {
Random rand = new Random(System.currentTimeMillis());
int red = 5;
int kolona = 4;
double total = 0;
double prosek = 0;
double kolTotal = 0;
double kolProsek = 0;
Double[][] tablica = new Double[red][kolona];
for (int r = 0; r < red; ++r)
for (int k = 0; k < kolona; ++k)
tablica[r][k]= (double) rand.nextInt(11);
for (int r = 0; r < red; ++r){
System.out.print("red "+ (r+1) +": ");
for (int k = 0; k < kolona; ++k)
System.out.printf(tablica[r][k]+ " ");
System.out.println();
}
for (int r = 0; r < red; ++r){
for (int k = 0; k < kolona; ++k)
total += tablica[r][k];
prosek = total / kolona;
System.out.println("Prosek "+ (r+1) +" reda je: "+ prosek +" a total je: "+ total);
total = 0;
prosek = 0;
}
for (int r = 0; r < red; r++){
for (int k = 0; k <= kolona; k++){
kolTotal += tablica[k][r];
kolProsek = kolTotal / red;
}
System.out.println("Ukupan zbir u koloni "+ (r+1) +" je: "+ kolTotal + " a prosek kolona je: "+ kolProsek);
kolTotal = 0;
kolProsek = 0;
}
}
Daj ako neko moze da pogleda i kaze mi sta radim pogresno
Dopuna: 10 Mar 2015 10:49
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 4
at jeb****.Trabunjanje.main(Trabunjanje.java:38)
ovo je greska koja mi se javlja
mada u ovom konkretnom slucaju on sve uradi i izracuna
problem se javlja kad prmenim velicinu tablice, odnosno kad mi je broj kolona veci od broja redova
sto ima veze sa ovim
"System.out.println("Ukupan zbir u koloni "+ (r+1) +" je: "+ kolTotal + " a prosek kolona je: "+ kolProsek);
"
znam da tu treba da je (k+1) ali tad ne vidi k zbog zatvorene zagrade a kad ubacim to u zagradu onda ga stampa puno puta
tako da sam udario u zid
Dopuna: 10 Mar 2015 10:53
Znam ja i sto se javlja ova greska al neznam kako da je resim
znam da on pocne da vrti i prelazi granicu od 4 kolko ima kolona i izbaci mi gresku al kako to da resim je moje pitanje.
|
|
|
Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
|
|
Poslao: 10 Mar 2015 15:48
|
offline
- Srki_82
- Moderator foruma
- Srđan Tot
- Am I evil? I am man, yes I am.
- Pridružio: 12 Jul 2005
- Poruke: 2483
- Gde živiš: Ljubljana
|
38. red popravi sa
kolTotal += tablica[k][r];
na
kolTotal += tablica[r][k];
|
|
|
|
Poslao: 10 Mar 2015 16:10
|
offline
- sadamceizle
- Novi MyCity građanin
- Pridružio: 18 Dec 2009
- Poruke: 14
|
Ne shvatam sta sam time dobio, to isto imam i kad racunam red sumu?
Samo sto sad total bude podeljen sa brojem redova. Hvala sto si pogledao al mislim da gresis!
|
|
|
|
Poslao: 10 Mar 2015 16:13
|
offline
- vasa.93
- Moderator foruma
- Pridružio: 17 Dec 2007
- Poruke: 14809
- Gde živiš: Niš
|
Ako računaš prosek kolone, onda i treba deliti zbir sa brojem redova/vrsta.
|
|
|
|
Poslao: 10 Mar 2015 16:15
|
offline
- sadamceizle
- Novi MyCity građanin
- Pridružio: 18 Dec 2009
- Poruke: 14
|
Pa znam da treba al ja dobijam sumu redova koju delim sa brojem redova a treba mi suma kolone koju cu da podelim sa brojem redova!!!
|
|
|
|
Poslao: 10 Mar 2015 16:17
|
offline
- vasa.93
- Moderator foruma
- Pridružio: 17 Dec 2007
- Poruke: 14809
- Gde živiš: Niš
|
Dalje, prvi indeks indeksira vrstu, a drugi kolonu. Dakle, prvo treba r, pa onda k. Obzirom da imaš samo četiri kolone, a r ti ide do 4, tu program puca jer adresiraš memoriju koju nisi rezervisao.
|
|
|
|
|
Poslao: 10 Mar 2015 16:20
|
offline
- vasa.93
- Moderator foruma
- Pridružio: 17 Dec 2007
- Poruke: 14809
- Gde živiš: Niš
|
Aha, potrebno je izvući liniju 39 izvan unutrašnje petlje. Zbog toga i ne dobijaš tačan rezultat.
|
|
|
|
|
Poslao: 10 Mar 2015 16:28
|
offline
- vasa.93
- Moderator foruma
- Pridružio: 17 Dec 2007
- Poruke: 14809
- Gde živiš: Niš
|
Napisano: 10 Mar 2015 16:23
Mada, i ovako dobijaš tačan rezultat. Svakako, ta linija je tu višak.
Dopuna: 10 Mar 2015 16:25
Okej, hajde da ne dužimo. Ovako računaš prosek kolone:
kolTotal = 0;
for (int k = 0; k < kolona; k++)
{
for (int r = 0; r < red; r++)
kolTotal += tablica[r][k];
kolProsek = kolTotal / red;
System.out.println("Ukupan zbir u koloni "+ (r+1) +" je: "+ kolTotal + " a prosek kolona je: "+ kolProsek);
kolTotal = 0;
kolProsek = 0;
}
Dopuna: 10 Mar 2015 16:27
Da, sad uočih, imao si i sledeću grešku:
for (int k = 0; k <= kolona; k++)
umesto
for (int k = 0; k < kolona; k++).
|
|
|
|