Newsgroup: it.comp.java
Titolo: Passaggio parametri al costruttore

Sono uno studente di ingegneria informatica alle prime armi con java e sto
cercando di fare un programma che gestisce le matrici 2x2 utilizzando 3
costruttori:
il 1° nn prende in ingresso nessun parametro e mi restituisce una matrice
identica;
il 2° prende in ingresso 2 parametri e mi restituisce una matrice diagonale;
il 3° prende in ingresso 4 parametri e mi restituisce la matrice cosi'
creata.
Ho scritto tutto il codice pero' quando compilo mi da' l'errore:
Application.java:28: cannot resolve symbol
symbol  : constructor Matrice  (int,int)
location: class Matrice
                mat1=new Matrice(dati[0],dati[1]);
                     ^
Ho cercato di trovare il problema ma proprio nn ci riesco, incollo qui di
seguito il sorgente del mio programma (sono 3 classi e le altre 2 nn hanno
problemi) quindi se qualcuno riuscisse a dirmi dove sbaglio gliene sarei
infinitamente grato.
Ciao a tutti.
public class Application
{
    public static void main(String args[])
    {
        int n;
        Matrice mat1=null;
        //Matrice mat2;
        ConsoleReader tastiera=new ConsoleReader();
        String valori;
        System.out.println("Quanti valori vuoi inserire? (0/2/4)");
        valori=tastiera.readLine();
        n=Integer.parseInt(valori);
        switch (n)
        {
            case 0: mat1=new Matrice();
                    break;
            case 2:
            {
                String elem;
                int dati[]=new int[n];
                for(int i=0;i<n;i++)
                {
                    System.out.println("Inserisci i valori per righe:
"+(i+1)+"° valore = ");
                    elem=tastiera.readLine();
                    dati[i]=Integer.parseInt(elem);
                }
                mat1=new Matrice(dati[0],dati[1]);
            }
            break;
            case 4:
            {
                String elem;
                int dati[]=new int[n];
                for(int i=0;i<n;i++)
                {
                    System.out.println("Inserisci i valori per righe:
"+(i+1)+"° valore = ");
                    elem=tastiera.readLine();
                    dati[i]=Integer.parseInt(elem);
                }
                mat1=new Matrice(dati[0],dati[1],dati[2],dati[3]);
            }
            break;
            default: System.out.print("Hai inserito un dato non valido e il
programma verra' terminato");
            System.exit(1);
            break;
        }
        System.out.println("La matrice e':\n"+mat1);
    }
}
/**
 * Classe ConsoleReader
 */
import java.io.*;
public class ConsoleReader
{
  private BufferedReader in;
  /**
   * Costruisce un flusso bufferizzato su std-in per la lettura di righe
   * intere
   */
  public ConsoleReader()
  {
    InputStreamReader reader=new InputStreamReader(System.in);
    in=new BufferedReader(reader);
  }
  /**
   * Legge da un flusso bufferizzato.
   * @return La linea letta da stardard-in oppure <i>null</i> in caso di
errore
   */
  public String readLine()
  {
    String riga;
    try
    {
      riga=in.readLine();
    }
    catch(IOException err)
    {
      System.err.println(err);
      riga=null;
    }
    return(riga);
  }
  public int readInt()
  {
    String riga=readLine();
    int retValue;
    if (riga==null)
      System.exit(1);
    try
    {
      retValue=Integer.parseInt(riga);
    }
    catch(NumberFormatException err)
    {
      return(0);
    }
    return(retValue);
  }
}
/**
 * Write a description of class Matrice here.
 *
 * @author Emanuele Panella
 * @version 21/02/2003
 */
public class Matrice
{
    /**
     * Constructor for objects of class Matrice
     */
    public void Matrice(int elem1,int elem2,int elem3,int elem4)
    {
        // initialise instance variables
        // Immetto gli elementi per riga
        matrix=new float[2][2];
        matrix[0][0]=elem1;
        matrix[0][1]=elem2;
        matrix[1][0]=elem3;
        matrix[1][1]=elem4;
    }
    public void Matrice(int elem1,int elem2)
    {
        // initialise instance variables
        // Immetto gli elementi sulla diagonale
        matrix=new float[2][2];
        matrix[0][0]=elem1;
        matrix[1][1]=elem2;
    }
    public void Matrice()
    {
        // initialise instance variables
        // Creo la matrice identica
        matrix=new float[2][2];
        matrix[0][0]=1;
        matrix[1][1]=1;
    }
    /**
     * Restituzione di un elemento della matrice dato l'indice
     *
     * @param  riga     Riga dell'elemento scelto
     * @param  colonna  Colonna dell'elemento scelto
     * @return elem     Elemento scelto
     */
    public float getElem(int riga,int colonna)
    {
        return matrix[riga][colonna];
    }
     /**
     * Impostazione di un elemento tramite indici
     *
     * @param  riga     Riga dell'elemento da impostare
     * @param  colonna  Colonna dell'elemento da impostare
     * @param  elem     Elemento da impostare
     * @return void
     */
    public void setElem(int riga,int colonna,float elem)
    {
        matrix[riga][colonna]=elem;
    }
     /**
     * Conversione in formato string per la stampa
     * @return matrixString Matrice stringa stampabile
     */
    public String toString()
    {
        String
matrixString="["+String.valueOf(matrix[0][0])+"]["+String.valueOf(matrix[0][
1])+"]\n"
+"["+String.valueOf(matrix[1][0])+"]["+String.valueOf(matrix[1][1])+"]";
        return(matrixString);
    }
    // Variabili istanza
    private float matrix[][];
}

     }
Se vuoi creare un costruttore non devi mettere un metodo si ritorno ... se
metti void in realtà crei dei metodi non dei costruttori.
Nel tuo caso hai una classe Matrice con un costruttore di default
Matrice() e con tre metodi che ritornano void che accettano i parametri.
Trasforma come segue:
public Matrice(){
..
}
public Matrice(int elem1,int elem2){
..
}
public Matrice(int elem1,int elem2,int elem3,int elem4{
..
}
A me funziona.
Salut
mauro
§... troppa fretta tu hai, giovane Skywalker ...§
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

Grazie MauroB nn sai quanto tempo ci ho perso ieri!