Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    error return (originale)

    buona domenica,

    ho un problema di passaggio di variabili tra classi:

    Ho un vettore bidimensionale, riempiendolo di oggetti derivati dalla classe Quadretto.
    Il mio problema sta nel passare quattro variabili che sono
    - 2: gli indici di dove si trovi l oggetto in considerazione.
    - 2: la larghezza e l altezza del vettore.

    Il mio intento è passare quelle quattro variabili nella classe Quadretto e tramite il metodo .selector() dirigerle in altri metodi in base alla posizione dell'oggetto.

    Posto il codice:
    CLASSE MAIN
    codice:
    package griglia;
    
    import java.awt.Color;
    import java.awt.GridLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.Timer;
    
    public class Main extends JFrame implements ActionListener {
    
        private int height=100;
        private int width=100;
        private int [] [] griglia=new int [height][width];
    
        public int getHeight () {
            return this.height;
        }
        public void setHeight (int height) {
            this.height=height;
        }
        public int getWidth () {
            return this.width;
        }
        public void setWidth (int width) {
            this.width=width;
        }
        
    
        public Main() {
            Timer t=new Timer(1000,this);
            setBounds(10,10,950,950);
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            setLayout(new GridLayout(height,width));
    /*      for (int i=0; i<(altezza*larghezza); i++){
                JLabel l=new JLabel();
                l.setOpaque(true);
                l.setBackground(new Color((int)(Math.random()*255),(int)(Math.random()*255),(int)(Math.random()*255)));
                this.add(l);
            }
     */
    
            for (int c=0;c<height;c++) {
                for (int r=0;r<width;r++) {
                    griglia [c][r]=Quadretto.selector(c,r);
                }
            }
    
            t.start();
            setVisible(true);
    
    
        }
    
        public static void main(String[] args) {
            new Main();
        }
    
        public void actionPerformed(ActionEvent e) {
            this.getContentPane().removeAll();
            for (int i=0; i<(this.height*this.width); i++){
                JLabel l=new JLabel();
                l.setOpaque(true);
                l.setBackground(new Color((int)(Math.random()*255),(int)(Math.random()*255),(int)(Math.random()*255)));
                add(l);
            }
            setVisible(true);
        }
    
    }
    CLASSE QUADRETTO
    codice:
    package griglia;
    public class Quadretto {
    
        private int c;
        private int r;
    
        public Quadretto (int c,int r) {
            this.c=c;
            this.r=r;
        }
        public void selector (c,r,height,width) {
            /*
             * SELETTORI
             * (c,r,height,width) dà error
             */
        }
    
    }

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Hai scritto del codice che ha poco senso.
    A partire dalla classe Quadretto che non compilerà mai (il metodo selector() non è scritto in Java, ma sembra quasi in pseudo-codice).

    Per non parlare di questo pezzo di codice nella classe principale:
    codice:
            for (int c=0;c<height;c++) {
                for (int r=0;r<width;r++) {
                    griglia [c][r]=Quadretto.selector(c,r);
                }
            }
    La parte in grassetto è il tentativo di richiamo di un metodo non statico come se questo fosse statico (NomeClasse.metodo al posto di Istanza.metodo) passandogli, per di più, metà dei parametri richiesti (il metodo richiede 4 parametri, tu ne passi 2)... forse volevi invocare il costruttore, ma sarebbe da rivedere tutta la creazione della matrice. La cosa paradossale è che si sta tentando di assegnare ad un elemento della matrice un presunto valore che dovrebbe essere ritornato da quel metodo, che, vista la firma, non ritorna proprio nulla (è dichiarato "void").

    Mi sono fermato qui. Direi che c'è abbastanza da studiare, capire e correggere prima di tentare di andare avanti:

    1) Cos'è un costruttore, cosa fa e come lo si usa/richiama
    2) Differenza fra metodi statici e di istanza
    3) Passaggio di parametri
    4) Come si dichiarano i metodi (firma del metodo)
    5) Metodi "void" e metodi che ritornano valori
    6) Varie ed eventuali


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    purtroppo dato che ho avuto altre idee ho dovuto cambiare il codice, per quello ci sono un mucchio di errori, e mancano ancora tante righe di codice che non ho messo perchè devo risolvere questo problema.

    comunque grazie

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.