Newsgroup: it.comp.java
Titolo: Array ..

Ciao a tutti,
Grazie a Marco x la sua ultima spiegazione.....!!!
°°°°°°°°°°°°°°°°°°°°°°
Ho un quesito da porVi....come faccio ad estrapolare da un Array di Double
un secondo array Copia del primo ma solo con la parte decimale??
Quale metodo posso implementare..!!
esempio   pippo[0] =3.14     copiaPippo[0]=0,14
Thanks.....
M.

Semplice :
Nel ciclo che copia l'array
for(int i = 0; i<arrayDouble.length; i++)
{
    // Copi in una variabile di supporto
    // il contenuto della parte intera.
    // Facendo il casting a long o int se i valori non superano i 4 miliardi
    // perdi la parte decimale
    long intValue = (long) arrayDouble[i];
    // dopo di che sottrai il valore ricavato a quello originale e lo passi
alla copia
    copyArray[i] = arrayDouble[i] - intValue;
}
P.S. ti consiglio vivamente di andarti a guardare i Thread relativi ai
numeri in virgola con Java.

 ha scritto nel messaggio
news:a535ns$2qqo$1...@stargate1.inet.it...


> pensavo si potesse risolvere con setMinimumIntegerDigits(int digits)
Puodarsi, ma credo che faccia qualcosa di simile al suo interno.
Mi sembra la soluzione più logica.

 ha scritto nel messaggio
news:a536c8$6c6u$1...@stargate1.inet.it...


Ciao ti ho corretto un pochino il codice, c'erano diversi errori.
Prima di tutto, hai dichiarato che il metodo lista doveva tornare un array e
poi nel return facevi tornare un singolo elemento.
Poi avevi fatto un ciclo che ogni volta chiamava lista.
Ora chiami una volta lista, ottieni l'array calcolato e lo visualizzi.
Di seguito trovi il codice commentato.
import javax.swing.*;
public class arrayq2
{
    public static void main(String [] ars)
    {
        int i=0;
        // questa variabile serve per capire
        // se sono stati introdotti valori errati
        boolean error = false;
        int lunghezza=Integer.parseInt(JOptionPane.showInputDialog("quanti
numeri vuoi darmi?"));
        double [] numeri = new double[lunghezza];
        // Ho sostituito il ciclo for con questo while
        // Perchč se ora immetti un valore errato, ti permette di
reinserirlo
        while(i<lunghezza)
        {
            // Questo try sta per : "prova"
            // Se il codice rileva un errore scatenato da Double
            // Lo rileva e permette di gestirlo, difatti se provi ad
inserire delle lettere
            // Il metodo Double bloccherebbe tutto restituendoti
            // NumberFormatException
            try{
                // Se non ci sono errori mostra il messaggio normale
                if(!error)
                {
                    numeri[i]=(new
Double(JOptionPane.showInputDialog("scrivi il numero = "+i))).doubleValue();
                    i++;
                }
                // Altrimenti mostra il messaggio di errore
                else
                {
                    // Sul vecchio JDK l'istruzione Double.parseDouble non
esiste
                    // quindi l'ho modificata alla vecchia maniera.
                    numeri[i]=(new
Double(JOptionPane.showInputDialog("Errore di sintassi.\nReinserire il
numero = "+i))).doubleValue();
                    error = true;
                    i++;
                }
            }catch(NumberFormatException e){
                // Il Catch viene eseguito in caso
                // di errore come ti avevo detto prima
                error = true;
            }
        }
        // Questo č quello che ti dicevo
        // Elabora solo una volta i dati e te li fai restituire
        double [] numeriElaborati = lista(numeri);
        // Quě mi creo un'array di Stringhe che poi valorizzo
        // con il risultato di lista e poi lo visualizzo in una
        // JList
        String valori[] = new String[numeriElaborati.length];
        // Valorizzo l'array
        // Per gli arrai utilizza questa notazione :
        //    for ( int indice = valStart; indice<valStop; indice
+=incremento)
        //     for ( int indice = valStart; indice>valStop;
indice -=incremento)
        //
        // scrivere for (i=0; i!=lunghezza; i++)
        // puň crearti problemi.
        for (i=0; i<lunghezza; i++)
            valori[i] = "la copia dei numeri immessi senza la parte intera =
" + numeriElaborati[i];
        // Personalizzo la JOprionPane
        // con un pannello che contiene una JList scrollabile
        // in cui visualizzo il risultato
        javax.swing.JList       result = new JList(valori);
        javax.swing.JScrollPane scr    = new JScrollPane(result);
        javax.swing.JPanel      pnl    = new JPanel();
        javax.swing.JOptionPane opPnl  = new JOptionPane();
        pnl.setLayout(new java.awt.BorderLayout());
        pnl.setSize(350,200);
        pnl.add(scr,"Center");
        opPnl.showMessageDialog(null, pnl);
        System.exit(0);
    }
    public static double[] lista( double [] pippo)
    {
        int i,temp;
        double [] pappo = new double[pippo.length];
        double [] risultato =new double[pippo.length];
        for (i=0 ; i<pippo.length; i++)
        {
            temp = (int)pippo[i];
            pappo[i] = temp;
            // Non so se č quello che volevi, ma se fai
            // pappo[i]-pippo[i] ottieni numeri negativi
            risultato[i]=(pappo[i]-pippo[i]);
        }
        // Questo č quasi sicuramente l'errore che ti dava
        // Tu cercavi di far tornare risultato[i]
        // A parte che avresti sempra fatto tornare l'ultimo valore
        // in piů era proprio sbagliato, perchč
        // hai dichiarato public static double[] lista
        // e cioč hai detto che da questo
        // metodo deve tornare un array
        // come avevi scritto tu, volevi far tornare un singolo elemento.
        return risultato;
    }
}
Ciao

 ha scritto nel messaggio
news:a553q0$6m66$1...@stargate1.inet.it...
