Casting float/string array u double array

Casting float/string array u double array

offline
  • Pridružio: 22 Avg 2005
  • Poruke: 98

Ovaj kod

 public float[][] Reader(String[] rows) {   doubleMat = new float [rows.length][rows.length];   for (int i = 0; i < rows.length; i++)   {     float[] pieces = float(split(rows[i], "\n"));     doubleMat[i] = pieces;   }   return doubleMat; } double[][] convert(float[][] f) {   double[][] d = new double[f.length][f.length];   for (int i= 0; i < f.length; i++)   {     for (int j = 0; i <f.length; j++)     {       d[i][j] = f[i][j];     }   }    return d; }
me muci jer nikako da proradi onako kako hocu. Treba mi da konvertujem string[] procitan iz .txt fajla u double[] [] ali tako da pomocu ove split naredbe podelim redove po /n. Naravno float lako dolazi do stringova kroz split ali double jednostavno nema tu mogucnost pa sam ovom convert funkcijom pokusao da to zaobidjem rucno ali nikako...Ukoliko ima ideja bilo bi super...



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • real 
  • Elitni građanin
  • Pridružio: 25 Nov 2004
  • Poruke: 2297
  • Gde živiš: Kragujevac

Imaš ti ovde malo više grešaka.
Prvo, trebao si da priložiš opis greške koju ti izbacuje kompajler.
Drugo, ako je ti je "String[] rows" niz redova, onda nemaš potrebu za petljom: "(split(rows[i], "\n")", u kojoj ti je čak i sintaksa pogrešna.
Ne bi bilo loše ni da prikažeš barem deo sadržaja txt fajla.



offline
  • Pridružio: 22 Avg 2005
  • Poruke: 98

Verujem da nije bas cool Java kod ali trebalo je da pomenem da ga i ne koristim u cistoj Javi vec kao deo Processing projekta...zbog toga je ovako nakaradna float(split....) funkicja a ne klasicno castovanje. Ipak ona radi upravo to sto mi treba. Prva funkcija Reader radi super a druga daje gresku samo kod ovog reda  d[i][j] = f[i][j]; i to ArrayIndexOutOfBounds: 1. Sam tekst fajl izgleda ovako:

 0.180255648139363 -0.00667651298070744 0.162348247019737 -0.191589377969573 0.0709050611053656 -0.138857268088634 0.146756400877611 -0.0544065210280407 0.0872491119739118 0.111238705044165 -0.116569215011486 0.192141757388624 -0.280418657404304 0.204003564941076 0.0227118500122201 -0.124343704359177 -0.0990123162538986 -0.0988786782054228 -0.0528787063381798 0.306381555155529 0.291545269305013 0.122172799109767 -0.184982169990112 -0.0103301592967197 -0.195177619281685 0.126546593213061 0.125249361957426 0.0682256764116228 0.265436694769634 -0.087738303341075 -0.0544473086966838 -0.0519257526733638 -0.112818063949037 -0.0754879115450236 0.404548812048409 0.0734244905911169 0.229415733873826 0  --ovde je /n-- -0.029731866528827 0.128343800862569 0.0853448290258961 -0.0057676140172111 0.131924458161917 -0.0837009386840716 -0.0799432359099045 0.0153208654582728 0.0272930785564452 -0.0832039079093889 -0.0245999102178250 0.325088897420534 -0.126166348706392 -0.0108646206191028 -0.0301377478575977 -0.291720429904751 -0.0583927712453809 0.0455505120187116 0.137172413810623 -0.229005855326070 -0.423559136217893 -0.325557790792932 -0.024826705814583 -0.0544342171327355 0.173708973342865 -0.0271896480207808 -0.125847992838723 -0.232173895258899 0.00750749347114249 0.100859650951929 0.217367139847187 0.0134083209375717 0.0163045562997956 -0.287643933387614 0.244002200729121 0.0953361141284971 0.229415733874776 9.92455077131584e-13

i tako ukupno 38 redova. Meni je inace neophodna upotreba JAMA paketa klasa za matrice ali jedino kako mogu da ubacim ove podatke u potreban format je ako oni budu double[][]. Ja uspevam da pretvorim u float[][] ali u double[][] nikako.

offline
  • real 
  • Elitni građanin
  • Pridružio: 25 Nov 2004
  • Poruke: 2297
  • Gde živiš: Kragujevac

Mada mi se ne sviđa kako si ovo odradio, nema veze, imaš grešku (previd) kod navođenja promenljive u unutrašnjoj petlji u drugoj metodi:

for (int j = 0; i <f.length; j++)

Treba svuda da bude "j"!

offline
  • Pridružio: 22 Avg 2005
  • Poruke: 98

Uh video sam to ali i dalje je IndexOutOfBounds...nesto mi mirise da ovako nece ici alltogether. Moracu da napisem ovo ispocetka...

offline
  • real 
  • Elitni građanin
  • Pridružio: 25 Nov 2004
  • Poruke: 2297
  • Gde živiš: Kragujevac

Možeš da staviš i ovako

for (int j = 0; j <f[i].length; j++)

da bi izbegao IndexOutOfBounds, mada je meni i dalje sumnjiv onaj prvi metod.

offline
  • Pridružio: 22 Avg 2005
  • Poruke: 98

U pravu si potpuno za prvi metod i konacno sam uspeo da ispravim sve i sad radi ono sto sam hteo.

public float[][] Reader(String[] rows) {   String[] rowCont = split(rows[0], " ");   RSrows = rows.length;   RScols = rowCont.length;   doubleMat = new float [rows.length][RScols];   for(int i = 0; i < rows.length; i++)   {     float[] rowStrings = float(split(rows[i], " "));         for(int j = 0; j < rowStrings.length; j++)     {       doubleMat[i][j] = rowStrings[j];     }   }   return doubleMat; } double[][] convertR(float[][] f) {   double[][] d = new double[RSrows][RScols];   for (int i = 0; i < RSrows; i++)   {     for (int j = 0; j < RScols; j++)     {       d[i][j] = f[i][j];     }   }    return d; }

fora je bila sa ovim RSrows da bi lepo formirao doubleMat bas po dimenzijama ulaznog floata[] inace se gubio u previse dimenzija ali nije davao nikakvu gresku osim onog out of bounds. Hvala na komentarima.

Ko je trenutno na forumu
 

Ukupno su 912 korisnika na forumu :: 33 registrovanih, 5 sakrivenih i 874 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3466 - dana 01 Jun 2021 17:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: A.R.Chafee.Jr., Albin0, bojank, darionis, Dorcolac, Dr.Strangelove, Excalibur13, Hans Gajger, HrcAk47, Ilija Cvorovic, ivan979, ladro, ljuba.b, mercedesamg, Metanoja, milutin134, miodrag, MiroslavD, mkukoleca, nemkea71, nenad81, Oscar, Romibrat, royst33, skvara, Snorks, sokars, ss10, Tvrtko I, vlad4, wolf431, zbazin, šumar bk2