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

    Aiuto serie di calcoli risultano 0

    Da poco mi sono buttato in java
    lasciate perdere la qualità del layout.
    Il programma, data velocità e angolo di partenza dovrebbe calcolare 100 punti della traiettoria parabolica e memorizzarne x e y in dati[][]
    calcolo il tempo totale, divido per cento, calcolo x e ok, ma la seconda parte delle y, quella da -1*(1/2*...
    risulta 0 (ho aggiunto le istruzioni per stampare la matrice sulla schermata di netbeans, proprio per vedere che valori dava...)
    ConvertFrame.java
    codice:
    /*
     * To change this template, choose Tools | Templates
     * and open the template in the editor.
     */
    package convertitore;
    
    import java.awt.*;
    import java.awt.event.*;
    import java.math.*;
    
    class ConvertFrame extends Frame implements ActionListener
    {
    private Panel  p1 = new Panel();
    private Panel  p2 = new Panel();
    private Panel  p3 = new Panel();
    private Panel  p4 = new Panel();
    private TextField  velocita = new TextField(15);
    private TextField  gradi = new TextField(15);  
    private TextField  ris = new TextField(15);
    private Button calcola = new Button("Calcola");
    
        public ConvertFrame()
        {
            super("Calcolo traiettoria proiettile");
            
            //addWindowListener(new GestoreFinestra());
            
            p1.add(new Label("Velocità"));
            p1.add(velocita);
            p2.add(new Label("Gradi"));
            p2.add(gradi);
            p4.add(ris);
            p3.add(calcola);
            setLayout(null);
            Disegna disegno = new Disegna();
            add(disegno);
            add(p1);
            add(p2);
            add(p4);
            add(p3);
            disegno.setBounds(30, 40, 501, 501);
            p1.setBounds(30, 540, 250, 70);
            p2.setBounds(30, 610, 250, 70);
            p4.setBounds(30, 680, 250, 70);
            p3.setBounds(30, 750, 250, 50);
            calcola.addActionListener(this);
        }
    
        @Override
        public void actionPerformed(ActionEvent e)
        {
            double vel;
            double grad;
            double rad;
            vel = Double.valueOf(velocita.getText()).doubleValue();
            grad = Double.valueOf(gradi.getText()).doubleValue();
            rad = Math.toRadians(grad);
            double dati[][] = new double[3][105];
            
            int i;
            double t_tot;
            t_tot = ((2*vel/9.81)*Math.sin(rad));
            
            double scatto;
            double netto;
            scatto = t_tot/100;       
            for (i=1; i <= 100; i++)
            {
                netto= scatto*i;
                dati[0][i]=i;
                dati[1][i]=vel*Math.cos(rad)*netto;
                dati[2][i]=((vel*Math.sin(rad)*netto)+-1*(1/2*9.81*netto*netto));
                
                System.out.println(dati[0][i]+" : "+netto+" : "+dati[1][i]+" : "+dati[2][i]);
                System.out.println(vel+" : "+Math.sin(rad)+" : "+netto+" : "+-1*(1/2*9.81*netto*netto));
            }
            
            ris.setText("Fatto!");
            
        }
        
    }
    Convertitore.java
    codice:
    /*
     * To change this template, choose Tools | Templates
     * and open the template in the editor.
     */
    package convertitore;
    
    /**
     *
     * @author Giovanni
     */
    public class Convertitore {
    
        /**
         * @param args the command line arguments
         */
        public static void main(String[] args) {
            ConvertFrame f = new ConvertFrame();
            
            f.pack();
            f.setVisible(true);
        }
    }
    Disegna.java (da completare ovviamente, dovrebbe fare il grafico)
    codice:
    /*
     * To change this template, choose Tools | Templates
     * and open the template in the editor.
     */
    package convertitore;
    
    import java.awt.*;
    public class Disegna extends Canvas
    {
        public void paint(Graphics g)
        {
                g.drawLine(100, 100, 300, 400);
                g.drawLine(0,0,0,500);
                g.drawLine(0,500,500,500);
                g.drawLine(500,500,500,0);
                g.drawLine(500,0,0,0);
        }
    }
    Grazie delle risposte in anticipo

  2. #2
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    1/2 è una divisione tra interi. Il risultato è (ovviamente) zero. Leggiti qualcosa sul cast delle variabili primitive.
    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
    ok grazie, avevo già risolto

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.