Visualizzazione dei risultati da 1 a 7 su 7

Discussione: Valorizzazione Array

  1. #1

    Valorizzazione Array

    Salve ragazzi,
    vi devo chiedere una mano perchè ho questo pezzo di codice che mi fa impazzire e non riesco a capire l'errore.

    codice:
    for(int i=0; i<jArray.length(); i++)
    {
    	    	JSONObject json_data = jArray.getJSONObject(i);
    	    				
    	    	temp.setData(json_data.getString("Data"));
    	    	temp.setRifiuto(json_data.getString("Rifiuto"));    				
    	    				
    	    				
    	    	arrayObject[i] = temp;  
    }
    Allora, come potete vedere è semplicissimo, un array di oggetti, che faccio scorrere e per ciascuno di essi valorizzo un elemento di questo array.

    La cosa assurda, è che quando valorizzo l'elemento arrayObject[i], lui mi sovrascrive anche i precedenti elementi che già erano valorizzati.

    Ma come diavolo è possibile? E' un qualcosa di assurdo, non può essere. Vi viene in mente qualcosa a proposito?
    Ultima modifica di GANDULE; 04-01-2015 a 09:36
    Ogni popolo ha il governo che si merita...

  2. #2
    Stai sempre assegnando lo stesso oggetto....
    In java, diceva il mio prof, è tutto un puntatore. Quindi modificando i valori dell'oggetto temp modifichi sempre la stessa istanza dell'oggetto, per risolvere devi creare un nuovo oggetto temp ad ogni ciclo prima di assegnarlo all'array

  3. #3
    Quote Originariamente inviata da francesco.muia Visualizza il messaggio
    Stai sempre assegnando lo stesso oggetto....
    In java, diceva il mio prof, è tutto un puntatore. Quindi modificando i valori dell'oggetto temp modifichi sempre la stessa istanza dell'oggetto, per risolvere devi creare un nuovo oggetto temp ad ogni ciclo prima di assegnarlo all'array
    A quanto pare non è questo il problema. Pur creando ogni qualvolta un nuovo oggetto temp, gli elementi precedenti dell'array assorbono tale modifica...

    Sembra proprio andare contro le leggi della programmazione questa cosa... non è mai capitato prima d'ora...
    Ogni popolo ha il governo che si merita...

  4. #4
    Posta il codice modificato e per intero altrimenti devo proprio pensare che nel tuo pc c'è un'invasione di troll

  5. #5
    Quote Originariamente inviata da francesco.muia Visualizza il messaggio
    Posta il codice modificato e per intero altrimenti devo proprio pensare che nel tuo pc c'è un'invasione di troll
    Sembra Follia... Questo il codice completo del metodo in questione... non mi pare di vedere niente di anomalo...



    codice:
    public static DataRifiuto [] inviaDati(String s)
    {
        String [] arrayResult = new String[0];
        DataRifiuto [] arrayObject = new DataRifiuto[7];;
        String result = "";
        String stringaFinale = "";
        ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
        nameValuePairs.add(new BasicNameValuePair("cap", "08986"));
        InputStream is = null;
        
        try{
            
                // get a calendar instance, which defaults to "now"
                Calendar calendar = Calendar.getInstance();
                 
                // get a date to represent "today"
                Date today = calendar.getTime();
                
                
                calendar.add(Calendar.DAY_OF_YEAR, 1);
                // now get "tomorrow"
                Date tomorrow = calendar.getTime();
                
                
                //Now get a next week
                calendar.add(Calendar.WEEK_OF_MONTH, 1);                
                Date endWeek = calendar.getTime();
    
    
    
    
                SimpleDateFormat sdf =  new SimpleDateFormat("yyyy-MM-dd");
                                
                //Convert Date object to string
                String strDate = sdf.format(tomorrow);
                
                String strWeekDate = sdf.format(endWeek);               
            
    
    
                
                HttpClient httpclient = new DefaultHttpClient();
                HttpPost httppost = new HttpPost("HTTP://demo.php?comune=" + s + "&data=" + strDate + "&wkdata=" + strWeekDate);
                httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
                HttpResponse response = httpclient.execute(httppost);
                HttpEntity entity = response.getEntity();
                is = entity.getContent();
        }catch(Exception e){
            
                stringaFinale = "TEST Errore nella connessione http " +e.toString();
                Log.e("TEST", "Errore nella connessione http "+e.toString());
        }
        if(is != null){
            //converto la risposta in stringa
            try{
                    BufferedReader reader = new BufferedReader(new InputStreamReader(is,"iso-8859-1"),8);
                    StringBuilder sb = new StringBuilder();
                    String line = null;
                    while ((line = reader.readLine()) != null) {
                            sb.append(line + "\n");
                    }
                    is.close();
    
    
    
    
                    result=sb.toString();
            }catch(Exception e){
                    Log.e("TEST", "Errore nel convertire il risultato "+e.toString());
            }
    
    
            //parsing dei dati arrivati in formato json
            try
            {
                
                if(!result.equals("null\n"))
                {
                    JSONArray jArray = new JSONArray(result);
                    
                    //arrayResult = new String[jArray.length()];
                    
                    //arrayObject = new DataRifiuto[jArray.length()];
                    
                    for(int i=0; i<jArray.length(); i++)
                    {
                        JSONObject json_data = jArray.getJSONObject(i);
                                                
                        DataRifiuto temp = new DataRifiuto();
                                                
                        temp.setData(json_data.getString("Data"));
                        temp.setRifiuto(json_data.getString("Rifiuto"));                    
                        
                        
                        arrayObject[i] = temp;                     
                    }
                }
                else
                {
                    arrayObject = null;                   
                }
            }
            
            catch(JSONException e)
            {
                    Log.e("log_tag", "Error parsing data "+e.toString());
            }
        }
        else{//is è null e non ho avuto risposta
    
    
        }
    
    
        return arrayObject;
        //return stringaFinale;
    }
    Ultima modifica di GANDULE; 05-01-2015 a 00:54
    Ogni popolo ha il governo che si merita...

  6. #6
    Ad occhio l'unico motivo per il quale si verifichi il problema e che l'array json contenga gli stessi dati. Hai provato a vedere cosa ti restituisce quella chiamata http ?

  7. #7
    Boh...
    cosa piuttosto inspiegabile...
    Per assurdo ho voluto creare un nuovo array e impostargli i valori del json, e ha ripreso a funzionare correttamente.

    Ma chi gliene capisce? Ad ogni modo sembra andare...

    Rimane in piedi la teoria dei Troll...
    Grazie comunque dell'aiuto

    Quote Originariamente inviata da francesco.muia Visualizza il messaggio
    Ad occhio l'unico motivo per il quale si verifichi il problema e che l'array json contenga gli stessi dati. Hai provato a vedere cosa ti restituisce quella chiamata http ?
    Ogni popolo ha il governo che si merita...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.