Autore Topic: Dove sto sbagliando con le matrici ed array  (Letto 663 volte)

Offline Gazzerpiece

  • Nuovo arrivato
  • *
  • Post: 13
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    emulatore
  • Sistema operativo:
    Windows 7
Dove sto sbagliando con le matrici ed array
« il: 24 Settembre 2013, 20:01:01 CEST »
0
ragazzi sto cercando di unire 3 array in un matrice..vorrei formare una matrice con 3 righe di  tot colonne(mi sembra di aver capito che vanno pensate in questa maniera in java le matrici).

Il codice è questo:
Codice (Java): [Seleziona]
       int lung =9168;
                         segnale3D = new double[3][lung];
                         
                        for (int i=0; i<lung; i++){
                                segnale3D [1][i] = valdoublex[i];
                        }
                        for (int i=0; i<lung; i++){
                                segnale3D [2][i] = valdoubley[i];
                        }
                        for (int i=0; i<lung; i++){
                                segnale3D [3][i] = valdoublez[i];
                        }


ma il programma mi si stoppa. Dal LogCat mi sembra di capire che esco fuori indice..ma come mai?

Codice: [Seleziona]
09-24 13:49:15.570: W/dalvikvm(12816): threadid=1: thread exiting with uncaught exception (group=0x41465700)
09-24 13:49:15.600: E/AndroidRuntime(12816): FATAL EXCEPTION: main
09-24 13:49:15.600: E/AndroidRuntime(12816): java.lang.ArrayIndexOutOfBoundsException: length=9166; index=9166
09-24 13:49:15.600: E/AndroidRuntime(12816):         at progetto.progetto.MainActivity.Load(MainActivity.java:357)
09-24 13:49:15.600: E/AndroidRuntime(12816):         at progetto.progetto.MainActivity$1.onClick(MainActivity.java:82)
09-24 13:49:15.600: E/AndroidRuntime(12816):         at android.view.View.performClick(View.java:4240)
09-24 13:49:15.600: E/AndroidRuntime(12816):         at android.view.View$PerformClick.run(View.java:17721)
09-24 13:49:15.600: E/AndroidRuntime(12816):         at android.os.Handler.handleCallback(Handler.java:730)
09-24 13:49:15.600: E/AndroidRuntime(12816):         at android.os.Handler.dispatchMessage(Handler.java:92)
09-24 13:49:15.600: E/AndroidRuntime(12816):         at android.os.Looper.loop(Looper.java:137)
09-24 13:49:15.600: E/AndroidRuntime(12816):         at android.app.ActivityThread.main(ActivityThread.java:5103)
09-24 13:49:15.600: E/AndroidRuntime(12816):         at java.lang.reflect.Method.invokeNative(Native Method)
09-24 13:49:15.600: E/AndroidRuntime(12816):         at java.lang.reflect.Method.invoke(Method.java:525)
09-24 13:49:15.600: E/AndroidRuntime(12816):         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
09-24 13:49:15.600: E/AndroidRuntime(12816):         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
09-24 13:49:15.600: E/AndroidRuntime(12816):         at dalvik.system.NativeStart.main(Native Method)
09-24 13:49:15.650: W/ActivityManager(286):   Force finishing activity progetto.progetto/.MainActivity
09-24 13:49:15.663: W/WindowManager(286): Screenshot failure taking screenshot for (266x425) to layer 21010
09-24 13:49:16.475: W/ActivityManager(286): Activity pause timeout for ActivityRecord{4174e5c8 u0 progetto.progetto/.MainActivity}

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Dove sto sbagliando con le matrici ed array
« Risposta #1 il: 24 Settembre 2013, 20:26:16 CEST »
0
indice che dovrebbe partire da zero?
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline Gazzerpiece

  • Nuovo arrivato
  • *
  • Post: 13
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    emulatore
  • Sistema operativo:
    Windows 7
Re:Dove sto sbagliando con le matrici ed array
« Risposta #2 il: 24 Settembre 2013, 20:35:18 CEST »
0
dovrebbe. Forse sono le righe con le quali ho cominciato da 1 invece che da 0!

Post unito: 24 Settembre 2013, 20:39:56 CEST
no niente ho provato a cambiare gli indici in questo modo ma nulla
Codice (Java): [Seleziona]
int lung = 9168;
                         segnale3D = new double[3][lung];
                         
                        for (int i=0; i<lung; i++){
                                segnale3D [0][i] = valdoublex[i];
                        }
                        for (int i=0; i<lung; i++){
                                segnale3D [1][i] = valdoubley[i];
                        }
                        for (int i=0; i<lung; i++){
                                segnale3D [2][i] = valdoublez[i];
                        }
« Ultima modifica: 24 Settembre 2013, 20:39:56 CEST da Gazzerpiece, Reason: Merged DoublePost »

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Dove sto sbagliando con le matrici ed array
« Risposta #3 il: 24 Settembre 2013, 20:57:13 CEST »
+1
Sicuro che valdoublex o valdoubley o valdoublez siano lunghi lung ?

Dal codice postato non c'è l'evidenza.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline Gazzerpiece

  • Nuovo arrivato
  • *
  • Post: 13
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    emulatore
  • Sistema operativo:
    Windows 7
Re:Dove sto sbagliando con le matrici ed array
« Risposta #4 il: 24 Settembre 2013, 21:18:43 CEST »
0
Sono abbastanza sicuro di si.  Però fatto sta che riscrivendo il codice in questo modo funziona!!Evidentemente c'è qualcosa che mi sfugge e tu hai ragione  :D.
Codice (Java): [Seleziona]
 segnale3D = new double[3][9000];
                         
                        for (int i=0; i<9000; i++){
                                segnale3D [0][i] = valdoublex[i];
                        }
                        for (int i=0; i<9000; i++){
                                segnale3D [1][i] = valdoubley[i];
                        }
                        for (int i=0; i<9000; i++){
                                segnale3D [2][i] = valdoublez[i];
                        }


Per fortuna a me interessano proprio i primi 9000 campioni e non gli altri 168. Comunque grazie, gia il fatto di aver visto di non sbagliare con le matrici mi è stato utile per concentrarmi sul problema effettivo.

Offline uglyicons

  • Utente junior
  • **
  • Post: 88
  • UglyIcons - Great Apps (perlomeno ci proviamo)
  • Respect: +3
    • Mostra profilo
    • La mia app: EML Reader FREE
  • Dispositivo Android:
    Huawei Honour
  • Play Store ID:
    UglyIcons
  • Sistema operativo:
    Win
Re:Dove sto sbagliando con le matrici ed array
« Risposta #5 il: 25 Settembre 2013, 14:22:14 CEST »
0
Scusa, ma non resisto alla curiosità: riesci ancora a capire se la riga 357 di MainActivity fosse la
segnale3D
  • = valdoublex;

?

Se si propenderei anch'io per un valdoublex lungo 9166, in ogni caso ti saresti poi ritrovato l'errore al terzo ciclo accedendo a
segnale3D [3]

Scusa, solo curiosità  :-P

Ciao,
       Paolo

EML Reader FREE
Apri file e allegati EML e MSG da qualsiasi fonte.
Download su Play Store!

Offline GabMarioPower

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 606
  • Respect: +152
    • Github
    • Google+
    • gabrielemariotti
    • GabMarioPower
    • Mostra profilo
  • Play Store ID:
    GAB+MARIO+DEV
  • Sistema operativo:
    Ubuntu 14.04 , Win 10
Re:Dove sto sbagliando con le matrici ed array
« Risposta #6 il: 25 Settembre 2013, 15:12:32 CEST »
0
java.lang.ArrayIndexOutOfBoundsException: length=9166; index=9166

Il 9166 dovrebbe essere l'indice illegale.

Offline Gazzerpiece

  • Nuovo arrivato
  • *
  • Post: 13
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    emulatore
  • Sistema operativo:
    Windows 7
Re:Dove sto sbagliando con le matrici ed array
« Risposta #7 il: 25 Settembre 2013, 15:47:50 CEST »
0
Scusa, ma non resisto alla curiosità: riesci ancora a capire se la riga 357 di MainActivity fosse la
segnale3D
  • = valdoublex;

?

Se si propenderei anch'io per un valdoublex lungo 9166, in ogni caso ti saresti poi ritrovato l'errore al terzo ciclo accedendo a
segnale3D [3]

Scusa, solo curiosità  :-P

Ciao,
       Paolo

la linea 357 era quella del ciclo for.:
Codice (Java): [Seleziona]
segnale3D [0][i] = valdoublex[i];.

Comunque al momento il codice è scritto con lung = 9166 e funziona!!
Codice (Java): [Seleziona]
segnale3D = new double[3][9166];
                         
                        for (int i=0; i<9166; i++){
                                segnale3D [0][i] = valdoublex[i];
                        }
                        for (int i=0; i<9166; i++){
                                segnale3D [1][i] = valdoubley[i];
                        }
                        for (int i=0; i<9166; i++){
                                segnale3D [2][i] = valdoublez[i];
                        }

Evidentemente c'è qualcosa sui valdouble che non noto..dovrebbero essere tutti e 3 di 9168 a regola.

Offline GabMarioPower

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 606
  • Respect: +152
    • Github
    • Google+
    • gabrielemariotti
    • GabMarioPower
    • Mostra profilo
  • Play Store ID:
    GAB+MARIO+DEV
  • Sistema operativo:
    Ubuntu 14.04 , Win 10
Re:Dove sto sbagliando con le matrici ed array
« Risposta #8 il: 25 Settembre 2013, 16:28:40 CEST »
+1
Per avere la certezza :

Log.d("",valdoublex.length);
Log.d("",valdoubley.length);
Log.d("",valdoublez.length);