mam taki program:(liczy mediane ,srednia,odchylenie standardowe,roznice miedzy max i min z pliku z liczbami)
import java.util.;
import java.io.;
public class Stat {
private Scanner cos;
private int rozm;
private int [] dane;
Stat (int r, String plik){
rozm=r;
try {
cos = new Scanner (new File(plik));
cos.useRadix(11);
} catch (FileNotFoundException ex) {
System.out.println ("Nie znaleziono pliku!");
}
}
int [] odczyt (){
dane = new int [rozm];
for (int i=0; i<rozm; i++ ){
dane [i] = cos.nextInt();
}
return dane;
}
double srednia(){
int srednia=0;
for (int i=0; i<rozm; i++){
srednia+=dane[i];
}
double srednia_d=(double)(srednia);
double rozm_d=(double)(rozm);
return srednia_d/rozm_d;
}
double odchylenie_standardowe(){
double odchylenie=0;
for (int i=0; i<dane.length; i++){
odchylenie+=((dane[i]*dane[i])- srednia()*srednia());
}
return Math.sqrt(odchylenie);
}
int rozstep(){
int nw = dane [1];
int nm = dane [0];
for (int i=1; i<rozm; i++){
if (dane[i]>nw) {nw=dane[i];}
else if (dane[i]<nm) {nm=dane[i];}
}
return (nw-nm);
}
int mediana(){
int wart=0;
int t[]=new int [dane.length];
int w;
//skopiowanie tablicy dane
for (int i=0; i<dane.length; i++){
t[i]=dane[i];
}
//uporzadkowanie tablicy t - kopii tablicy dane
for (int i=0; i<t.length; i++){
for (int j=0; j<t.length; j++){
if (t[i]<t[j]){
w= t[i];
t[i]= t[j];
t[j]=w;
}
}
}
System.out.println ("posortowane: "+Arrays.toString(t));
//szukanie mediany
if ((t.length%2)==1) {
wart=t[(t.length/2)];
}
else {
wart=(t[(t.length/2)]+t [((t.length/2)+1)])/2;
wart/=2;
}
return wart;
}
public String toString(){
String napis = new String ();
napis = "[ ";
for (int i=0; i<(rozm-1); i++){
napis += (dane [i] + ", ");
}
napis += dane[(rozm-1)]+" ]";
return napis;
}
}
czesc glowna:
import java.util.;
import java.io.;
public class J_06_dod {
public static void main (String args[]) {
String plik = new String ();
plik = args [0];
int wielkosc= Integer.parseInt (args [1]);
Stat ob = new Stat (wielkosc, plik);
ob.odczyt();
System.out.println("Zawartosc pliku "+plik+" : "+ob.toString());
System.out.println("Srednia arytmetyczna: "+ob.srednia());
System.out.println("Odchylenie standardowe: "+ob.odchylenie_standardowe());
System.out.println("Mediana: "+ob.mediana());
System.out.println("Roznica miedzy elementem max i min: "+ob.rozstep());
}
}
plikz danymi ma 10 wierszy z liczbami, kompiluje sie, ale po wywolabiu wyswietla sie "Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException : 0 at J_06_dod.main(J_06_dod.java:6)" to chyba cos z przekroczeniem tablicy ,tylko gdzie jest blad?
ort!<ort></ort>
</code><code class="cpp">