Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1

    [JAVA] Sostituire tutti gli array con Vettori

    Salve a tutti. Dopo 4 giorni di lavoro, ho finito un programmino richiesto dal mio prof. Oggi l'ho presentato a lui, ma mi ha chiesto di sostituire tutti gli array creati con vettori che quindi mi permettono di usare infiniti numeri e la sua grandezza varia in base allo spazio di cui ho bisogno.

    Sono davvero stremato e non so da dove cominciare, anche se lui mi ha detto che è molto semplice. Chi mi aiuta? Posto il codice

    EllisseNUO1.java
    import javax.swing.JApplet;
    import java.awt.*;
    import java.awt.Graphics;
    import java.awt.Graphics2D;
    import java.awt.geom.Point2D;
    import java.awt.geom.Rectangle2D;
    import java.awt.Color;
    import java.awt.Shape;
    import java.awt.Font;
    import java.awt.event.MouseEvent;
    import java.awt.event.MouseAdapter;
    import java.awt.event.MouseMotionAdapter;
    import java.awt.geom.Ellipse2D;
    import javax.swing.JOptionPane;

    public class EllisseNUO1 extends JApplet{
    int n;
    int[] x= new int[500];
    int[] y= new int[500];
    private Ellipse2D.Double ellisseCorrente;
    private double inizioX;
    private double inizioY;
    private Point2D.Double inizio;
    Ellipse2D.Double[] ovali= new Ellipse2D.Double[50];
    int numEllissi;
    int[] contatore=new int[500];
    int ampiezza = 2;

    public EllisseNUO1() {

    String s;
    s = JOptionPane.showInputDialog("Quanti punti vuoi disegnare nell'applet?");
    n = Integer.parseInt(s);

    for(int i=0; i<n;i++)
    {
    x[i]=(int)(700*Math.random());
    y[i]=(int)(500*Math.random());
    }
    class AscoltaClick extends MouseAdapter
    {
    public void mousePressed(MouseEvent e)
    {

    inizioX = e.getX();
    inizioY = e.getY();
    ellisseCorrente = new Ellipse2D.Double(inizioX, inizioY, 0, 0);
    repaint();
    }

    public void mouseReleased(MouseEvent e)
    {

    int x2 = e.getX();
    int y2 = e.getY();

    if(inizioX>x2 && inizioY>y2) {

    ovali[numEllissi]= new Ellipse2D.Double(x2,y2,inizioX-x2,inizioY-y2);

    } else if(inizioX<x2 && inizioY>y2) {
    ovali[numEllissi]= new Ellipse2D.Double(inizioX,y2,x2-inizioX,inizioY-y2);
    } else if(inizioX>x2 && inizioY<y2) {
    ovali[numEllissi]= new Ellipse2D.Double(x2, inizioY,inizioX-x2,y2-inizioY);
    } else {
    ovali[numEllissi]= new Ellipse2D.Double(inizioX,inizioY,x2-inizioX,y2-inizioY);
    }

    for(int i=0;i<n;i++){
    if(ovali[numEllissi].contains(x[i],y[i])==true)
    contatore[i]++;
    }
    numEllissi++;
    // ellisseCorrente = null;
    repaint();
    }
    }

    class AscoltaMovimento extends MouseMotionAdapter

    {

    public void mouseDragged(MouseEvent e)
    {
    int x1 = e.getX();
    int y1 = e.getY();
    if(inizioX>x1 && inizioY>y1) {

    ellisseCorrente= new Ellipse2D.Double(x1,y1,inizioX-x1,inizioY-y1);

    } else if(inizioX<x1 && inizioY>y1) {
    ellisseCorrente= new Ellipse2D.Double(inizioX,y1,x1-inizioX,inizioY-y1);
    } else if(inizioX>x1 && inizioY<y1) {
    ellisseCorrente= new Ellipse2D.Double(x1, inizioY,inizioX-x1,y1-inizioY);
    } else {
    ellisseCorrente= new Ellipse2D.Double(inizioX,inizioY,x1-inizioX,y1-inizioY);
    }
    repaint();
    }
    }


    MouseAdapter ascoltaEventi = new AscoltaClick();
    addMouseListener(ascoltaEventi);
    MouseMotionAdapter ascoltaMosse = new AscoltaMovimento();
    addMouseMotionListener(ascoltaMosse);

    }
    public void paint(Graphics g)
    {
    Graphics2D g2 = (Graphics2D) g;
    g2.clearRect(0,0,getWidth(),getHeight());
    g.setColor(Color.black);

    for(int i=0;i<n;i++)
    {
    g.fillOval(x[i]-ampiezza/2,y[i]-ampiezza/2, ampiezza, ampiezza);}

    if(ellisseCorrente!=null)
    g2.draw(ellisseCorrente);

    for(int i=0; i<numEllissi; i++)
    {
    g2.draw(ovali[i]);
    }
    for(int i=0;i<n;i++)
    {
    if(contatore[i]!=0){
    g.setColor(Color.red);
    g.fillOval(x[i]-(ampiezza*contatore[i])/2,y[i]-(ampiezza*contatore[i])/2,ampiezza*contatore[i],ampiezza*contatore[i]);

    }
    }
    }


    }

    Il tutto viene caricato su un Applet di nome EllisseNUO1.html che ha codice HTML:
    <html>
    <head>

    <title>Darhma Project</title>
    </head>
    <body bgcolor=<"#FFFFOO">
    <h1>Darhma Project - Ellipse and Point</h1>
    <center>
    <applet code = "EllisseNUO1.class" width="700" height="500"> </applet>
    </center>
    [/list]

    </body>

    </html>


    Ki mi aiuta? il prof dice che è facilissimo, ma io con i vettori non ho mai avuto a che fare

  2. #2
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802

    Re: [JAVA] Sostituire tutti gli array con Vettori

    Originariamente inviato da bombettino


    Ki mi aiuta? il prof dice che è facilissimo, ma io con i vettori non ho mai avuto a che fare

    Intendi array dinamici? Dai un'occhiata alla classe ArrayList
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  3. #3
    non si tratta degli ArrayList, ma del metodo Vector.

  4. #4
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Originariamente inviato da bombettino
    non si tratta degli ArrayList, ma del metodo Vector.
    java.util.Vector è una classe, non un metodo.

    Tra ArrayList è Vector non c'è molta differenza, entrambi fanno parte del "Collections framework" ma mentre Vector è sincronizzato, ArrayList non lo è. Quindi, a meno che non hai un accesso concorrente al vettore, l'uso di una classe o dell'altra è piuttosto indifferente.


    Prova a scrivere il nome della classe su google, troverai una cosina simpatica che sia chiama "javadoc": http://java.sun.com/javase/6/docs/ap...il/Vector.html
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  5. #5
    Eh si.. la mia è sicuramente pigrizia unita a stanchezza e la voglia di non imbattermi in nuovi problemi con questo linguaggio. Java.. se lo conosci lo ami.. altrimenti lo odii. Il problema principale era convertire tutti i miei Array che hanno valori INT, e dato che il metodo Vector non accetta nessuna var. primitiva, ma solo oggetti, allora devo utilizzare cast per incapsulare queste benedette variabili.

    Ma tutti gli IF e i FOR del mio codice adesso che introduco Vector cambiaranno di molto, o si tratta solo di fare qualche piccolo cambiamento??

    Ed invece, il mio codice originale era:

    String s;
    s = JOptionPane.showInputDialog("Quanti punti vuoi disegnare nell'applet?");
    n = Integer.parseInt(s);

    adesso, come faccio a trasformare "s" in un oggetto utilizzabile per il mio Vector?

  6. #6
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Non cambia molto...

    Al posto di

    int[] y= new int[500];

    Avrai

    Vector<Integer> x = new Vector<Integer>(500);

    In questo caso 500 è la dimensione iniziale dell'array, quando questo si riempie aumenta di dimensione da solo.

    Poi, al posto di

    x[i] = (int)(700*Math.random());

    avrai

    x.set(i, (int)(700*Math.random()));

    In alternativa, se devi caricare l'array meglio usare

    x.add((int)(700*Math.random()));


    p.s.: se devi postare del codice usa il tag CODE, in modo da mantenere l'indentazione
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  7. #7
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Originariamente inviato da bombettino
    Ed invece, il mio codice originale era:

    String s = JOptionPane.showInputDialog("Quanti punti vuoi disegnare nell'applet?");
    n = Integer.parseInt(s);

    adesso, come faccio a trasformare "s" in un oggetto utilizzabile per il mio Vector?
    Intendi 'n'?

    Se usi Vector<Integer> basta passarlo ad add/set come un normale int. Se invece non usi i tipi generici (quindi usi solo Vector) viene sott'intenso il tipo Object e quindi devi passare ad add/set un oggetto (ad esempio Integer).
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  8. #8
    Grazie a tutti. Ora è rimasto un altro piccolo problema sempre dovuto al passaggio da double e int a object.

    Io prima avevo un Array di tipo:

    Ellipse2D.Double[] ovali= new Ellipse2D.Double[50];

    ed in "ovali" io introducevo le 4 variabili di Ellipse2D.Double (coordinate x e y e altezza e larghezza dell'ellisse) che nel mio caso erano int, int e Double Double.

    Adesso il mio professore mi ha detto che per passare a vector sostituisco

    Ellipse2D.Double[] ovali= new Ellipse2D.Double[50];

    con

    Vector<Ellipse2D.Double> ovali= new Vector<Ellipse2D.Double>(50);

    Ma adesso come aggiungo le 4 variabili int e double se la funzione add non me le accetta? ho provato anche a convertire tutte e 2 le variabili in oggetto, ma poi la funzione add mi dà errore. Come posso fare?

    Ps: spiegatemi dove e come mettere il tag Code.

  9. #9
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Originariamente inviato da bombettino
    Ma adesso come aggiungo le 4 variabili int e double se la funzione add non me le accetta? ho provato anche a convertire tutte e 2 le variabili in oggetto, ma poi la funzione add mi dà errore. Come posso fare?
    Prima di chiamare add ti istanzi un oggetto Ellipse2D.Double, lo riempi con i tuoi dati e poi lo passi ad add

    Originariamente inviato da bombettino
    Ps: spiegatemi dove e come mettere il tag Code.
    Basta che scrivi il tuo codice tra [ CODE ] e [ /CODE ] (senza spazi tra le parentesi)
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  10. #10
    Alex 87 grazie dell'aiuto. Alcuni vettori li ho inseriti, ma ora non riesco ad andare avanti. Non riesco a sostituire l'array ovali[numEllissi] che contiene le 4 variabili che ti dissi prima (2 int e 2 double). Tu mi hai detto di mettere le 4 variabili dentro un oggetto Ellipse2D.Double e poi di passare ad add l'oggetto Ellipse2D.Double. Purtroppo è da poco che uso il codice e mi perdo anche dentro un bicchier d'acqua. Dal codice potresti dirmi come devo fare? MouseReleased prende le variabili di mousePressed e le confronta con le sue attraverso un If else, e poi le inserisce dentro questo benedetto array. Come le posso far inserire dentro un Vector?? Ti posto del codice che interessa il problema:

    codice:
    private double inizioX;
    private double inizioY;
    Ellipse2D.Double[] ovali= new Ellipse2D.Double[50];
    codice:
    public void mousePressed(MouseEvent e)
    			{
    		
    				inizioX = e.getX();
    				inizioY = e.getY();
    				ellisseCorrente = new Ellipse2D.Double(inizioX, inizioY, 0, 0);
    				repaint();
    			}
    				
    		public void mouseReleased(MouseEvent e)
    			{		
    				
    				int x2 = e.getX();
     				int y2 = e.getY();
     				
     				if(inizioX>x2 && inizioY>y2) {
     					
         	        ovali[numEllissi]= new Ellipse2D.Double(x2,y2,inizioX-x2,inizioY-y2);
     			
     				} else if(inizioX<x2 && inizioY>y2) {
     				ovali[numEllissi]= new Ellipse2D.Double(inizioX,y2,x2-inizioX,inizioY-y2);
     				} else if(inizioX>x2 && inizioY<y2) {
    				ovali[numEllissi]= new Ellipse2D.Double(x2, inizioY,inizioX-x2,y2-inizioY);
    			    } else {
    			    ovali[numEllissi]= new Ellipse2D.Double(inizioX,inizioY,x2-inizioX,y2 inizioY);   	
    			    }

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.