klasa scanner

0

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">

0

1 używaj znaczników < code=java > tu wstaw kod< code > (pomiń spacje z znacznikach)
2. zaznacz wiersz z błędem żeby nie trzeba było liczyć wierszy
3. jeśli wywołujesz program tak

java J_06_dod

to jest błąd przekroczenia zakresu tablicy, powinno się go uruchamiać tak

java J_06_dod nazwa_pliku

napisz klasę główną tak

import java.util.*;
import java.io.*;
public class J_06_dod {
    public static void main (String args[]) {
        String plik = new String ();
        if(args.length==0)
        {
             System.out.println("Poprawne uruchomienie java J_O6_dod nazwa_pliku");
             System.exit(0);
        }
        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());
     
    }
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1