Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

Καλημερα σε ολους.εξεταστικη σε λιγο καιρο και ειπα να κατσω να λυσω τα παλια θεματα μιας και βαζει περιπου τα ιδια σε καθε εξεταστικη.ομως στο τελευται συναντησα μερικα προβληματα. αλλα λυθηκαν και αλλα παραμενουν. απο εχθες προσπαθω αλλα τιποτα.

Περιγραφη: εχω 3 textfields που γραφω και ενα jbutton που οταν πατιεται αποθηκευει σε εναν πινακα οτι εγραψα σε textfields.εχω δημιουουργησει μια κλαση vehicles και στο Jframe δημιουργω πινακα 

 

1)   vehicles [ ] store=new vehicles[100]; πιστευω αυτο ειναι σωστο.

 

και μετα στο :

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
      
        
        int i=0;
        for (i=0; i<3;i++){
        store=new vehicles(jTextField3.getText(),Integer.parseInt(jTextField4.getText()),Float.parseFloat(jTextField4.getText())); 
        System.out.print(store.getpinakida());
     //System.out.println(vehicle[k]);
    }                                        
    }
 
 
 
 
σιγουρα υπαρχει λαθος. μπορει καποιος να βοηθησει?αν χρειαστει μπορω να ανεβασω ολο το προγραμμα ωστε να καταλαβετε περισσοτερα
Δημοσ.

Καταρχην γιατι να κανεις τα vehicles σαν Array με τυχαιο μεγεθος και οχι σαν List?

Κατα δευτερον προς Θεου παρουσιασε τον κωδικα σου formatted σε ανθρωπινη μορφη αμα θελεις καποιος να σε βοηθησει, πχ.

for (int i=0; i<3; i++) {
  store[i] = new vehicles(jTextField3.getText(),
                          Integer.parseInt(jTextField4.getText()),
                          Float.parseFloat(jTextField4.getText())); 
  System.out.print(store[i].getpinakida());
     //System.out.println(vehicle[k]);
   }                                        
}

Μετα απο αυτα. Τι εννοεις σιγουρα υπαρχει λαθος; 

 

Η λογικη που στελνεις το ιδιο TextField σαν Integer και σαν float ποια ειναι; 

 

Εχεις ορισει τo TextField4 να δεχεται μονο αριθμους και τιποτα αλλο για να μην σου πεταξει exception αμα βαλεις γραμματα;

 

PS : Δεν υπαρχει λογος να ορισεις

int i=0;
for (i=0; i<3;i++) {}
μπορεις απλα να γραψεις 
for (int i=0; i<3; i++) {}

η αμα παιρνεις το ορισμα απο αλλο υπολογισμο μπορεις απλα να γραψεις 

int i = 0;
for (;i < 3; i++) {}
  • Like 2
Δημοσ.

εχεις δικιο για αυτο και θα το γραψω ποιο καλα

 

εχω μια κλαση vehicles:

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package transportcompany;

/**
 *
 * @author Μιχάλης
 */
public class vehicles  {
    String pinakida;
    int lt;
    double co2;
    
    public vehicles(String pinakida, int lt,double co2){
        this.pinakida=pinakida;
        this.lt=lt;
        this.co2=co2;

}
    
    public void setpinakida(String pinakida){this.pinakida=pinakida;}
    public void setlt(int lt){this.lt= lt;}
    public void setco2(double co2){this.co2=co2;}
    
    
    public String getpinakida(){return pinakida;}
    public int getlt(){return lt;}
    public double getco2(){return co2;}
    
}

αλλη μια eteria:

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package transportcompany;

/**
 *
 * @author Μιχάλης
 */
public class eteria  {
    int afm;
    String name;

    public eteria (String name){this.name=name;}
    public eteria(int afm){this.afm=afm;}

    eteria() {
        
    }
   public void setname(String name){this.name=name;}
   public void setafm(int afm){this.afm=afm;}
   public String getname(){return name;}
   public int getafm(){return afm;}
    
    
    
}

και την κυρια κλαση απο την οποια τρεχει το προγραμμα:

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package transportcompany;

/**
 *
 * @author Μιχάλης
 */
public class NewJFrame extends javax.swing.JFrame {

    /**
     * Creates new form NewJFrame
     */
    vehicles [] store=new vehicles[100];
    

    public NewJFrame() {
        initComponents();
    }

    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
    private void initComponents() {

        jPanel1 = new javax.swing.JPanel();
        jLabel1 = new javax.swing.JLabel();
        jLabel2 = new javax.swing.JLabel();
        jLabel3 = new javax.swing.JLabel();
        jTextField1 = new javax.swing.JTextField();
        jTextField2 = new javax.swing.JTextField();
        jPanel2 = new javax.swing.JPanel();
        jLabel4 = new javax.swing.JLabel();
        jLabel5 = new javax.swing.JLabel();
        jLabel6 = new javax.swing.JLabel();
        jLabel7 = new javax.swing.JLabel();
        jTextField3 = new javax.swing.JTextField();
        jTextField4 = new javax.swing.JTextField();
        jTextField5 = new javax.swing.JTextField();
        jButton1 = new javax.swing.JButton();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        jLabel1.setText("Ονομα εταιριας:");

        jLabel2.setText("ΑΦΜ εταιριας:");

        jLabel3.setText("ΣΤΟΙΧΕΙΑ ΕΤΑΙΡΙΑΣ");

        jTextField1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jTextField1ActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
        jPanel1.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addGap(157, 157, 157)
                        .addComponent(jLabel3))
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addContainerGap()
                        .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()
                                .addComponent(jLabel1)
                                .addGap(18, 18, 18))
                            .addGroup(jPanel1Layout.createSequentialGroup()
                                .addComponent(jLabel2)
                                .addGap(27, 27, 27)))
                        .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
                            .addComponent(jTextField2, javax.swing.GroupLayout.DEFAULT_SIZE, 185, Short.MAX_VALUE)
                            .addComponent(jTextField1))))
                .addContainerGap(79, Short.MAX_VALUE))
        );
        jPanel1Layout.setVerticalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addComponent(jLabel3)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 25, Short.MAX_VALUE)
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel1)
                    .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addComponent(jLabel2)
                    .addComponent(jTextField2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addContainerGap())
        );

        jLabel4.setText("ΣΤΟΙΧΕΙΑ ΟΧΗΜΑΤΟΣ");

        jLabel5.setText("Πινακιδα:");

        jLabel6.setText("χωριτηκοτητα(lt):");

        jLabel7.setText("εκπεμπομενο CO2:");

        jTextField3.setText("men864");

        jTextField4.setText("25");

        jTextField5.setText("0.5");

        jButton1.setText("Υποβολη δημιουργιας εταιριας");
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
        jPanel2.setLayout(jPanel2Layout);
        jPanel2Layout.setHorizontalGroup(
            jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel2Layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jLabel5)
                    .addComponent(jLabel6)
                    .addComponent(jLabel7))
                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(jPanel2Layout.createSequentialGroup()
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 59, Short.MAX_VALUE)
                        .addComponent(jLabel4)
                        .addGap(134, 134, 134))
                    .addGroup(jPanel2Layout.createSequentialGroup()
                        .addGap(18, 18, 18)
                        .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                            .addComponent(jTextField3, javax.swing.GroupLayout.DEFAULT_SIZE, 113, Short.MAX_VALUE)
                            .addComponent(jTextField4)
                            .addComponent(jTextField5))
                        .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))))
            .addGroup(jPanel2Layout.createSequentialGroup()
                .addGap(107, 107, 107)
                .addComponent(jButton1)
                .addGap(0, 0, Short.MAX_VALUE))
        );
        jPanel2Layout.setVerticalGroup(
            jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel2Layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jLabel4)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel5)
                    .addComponent(jTextField3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(18, 18, 18)
                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel6)
                    .addComponent(jTextField4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(18, 18, 18)
                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel7)
                    .addComponent(jTextField5, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 17, Short.MAX_VALUE)
                .addComponent(jButton1))
        );

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addGap(0, 0, Short.MAX_VALUE)
                .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(127, Short.MAX_VALUE))
        );

        pack();
    }// </editor-fold>                        

    private void jTextField1ActionPerformed(java.awt.event.ActionEvent evt) {                                            
        // TODO add your handling code here:
    }                                           


    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
      
        
        
        for (int i=0; i<3;i++){
        store[i]=new vehicles("",0,0.0); 
        System.out.print(store[i]);
     
    }                                        
    }
    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        /* Set the Nimbus look and feel */
        //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
        /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
         * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html 
         */
        try {
            for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
                if ("Nimbus".equals(info.getName())) {
                    javax.swing.UIManager.setLookAndFeel(info.getClassName());
                    break;
                }
            }
        } catch (ClassNotFoundException ex) {
            java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
            java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        }
        //</editor-fold>

        /* Create and display the form */
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new NewJFrame().setVisible(true);
            }
        });
    }

    // Variables declaration - do not modify                     
    private javax.swing.JButton jButton1;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JLabel jLabel4;
    private javax.swing.JLabel jLabel5;
    private javax.swing.JLabel jLabel6;
    private javax.swing.JLabel jLabel7;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JPanel jPanel2;
    private javax.swing.JTextField jTextField1;
    private javax.swing.JTextField jTextField2;
    private javax.swing.JTextField jTextField3;
    private javax.swing.JTextField jTextField4;
    private javax.swing.JTextField jTextField5;
    // End of variables declaration                   
}

επιδη καλω την κλαση vehicles  και δημιουργω πινακα πανω σε αυτην την κλαση πρεπει να μετατραπει το string που δινω στα jtexts να γινουν ιντ και  double  αντιστοιχα.ο πινακας που δηλωνω ειναι σωστος?αν ναι εχω λαθος στην εισαγωγη στοιχειων η στην εκτυπωση τους? η σε ολα??

Δημοσ.

   Ο πινακας που δηλωνεις δεν εχει προβλημα, απλα ειναι προτιμοτερο να δουλευεις με λιστες αποτι με πινακες, ειδικα εφοσον δεν υπαρχει κανενα κολλημα με το performance ( που δεν παιζει να υπαρχει εκτος αμα σκοπευεις να φτιαξεις λογισμικο για spaceship). 

  Και θα αντικαταστησεις το 

for (i=0; i<3;i++) {} 

με 

for (i=0; i<shop.lenght;i++) {}

ωστε αμα θελεις να προσθεσεις και αλλο αμαξι να μην πρεπει να αλλαξεις κωδικα σε 10 σημεια μετα απο 2 μερες debugging.

 

   Χωρις να ξερω java, υποθετω θα υπαρχει τροπος να αναγκαζεις ενα TextField να δεχεται μονο numeric τιμες, για τα λιτρα και το CO2.

Οπως ειναι τωρα το προγραμμα σου αμα γραψει "πεντε" στα λιτρα το προγραμμα σου κρασαρει γιατι προσπαθει να μετατρεψει το πεντε σε αριθμο.

  

Δημοσ.

 υποθετω θα υπαρχει τροπος να αναγκαζεις ενα TextField να δεχεται μονο numeric τιμες, για τα λιτρα και το CO2.

 

Μπορείς να ελέγχεις το πεδίο του TextField με ένα Exception κάνωντας parseInt τη τιμή του και όταν γίνεται catch το Exception του εμφανίζεις ένα μήνυμα πως επιτρέπονται μόνο αριθμοί, αλλιώς συνεχίζεις...

 

Eπίσης μπορείς να δεις και τα Formatted text fields

Δημοσ.

Μπορείς να ελέγχεις το πεδίο του TextField με ένα Exception κάνωντας parseInt τη τιμή του και όταν γίνεται catch το Exception του εμφανίζεις ένα μήνυμα πως επιτρέπονται μόνο αριθμοί, αλλιώς συνεχίζεις...

 

Eπίσης μπορείς να δεις και τα Formatted text fields

Σιγουρα θα υπαρχει καλυτερος τροπος απο exception, θα εχει κανενα event textValidation. 

 

PS : Yπαρχει InputVerifier. αποτι ειδα, που επιστρεφει boolean, οπως απλα θα κανεις ενα RegExpression check. 

Οπου μπορεις να αποφευγεις να δουλευεις με exceptions , ειδικα σε θεματα τυπου Input validation, που μπορεις να κανεις την δουλεια ευκολα με regular expressions.

 

Τα μονα exceptions που δεν μπορεις να αποφυγεις και θα ειναι μερος της λογικης του προγραμματος σου ειναι timeouts πχ σε USB Devices, serial ports που θα τσεκαρουνε αμα ειναι μια συσκευη συνδεδεμενη. 

( υπαρχουνε και αλλες περιπτωσεις προφανως, απλα το exceptions πρεπει ναναι εσχατη επιλογη).

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...