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

προβλημα σε προγραμμα Java


efefef

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

Δημοσ.

Γεια σας....εχω την παρακατω κλαση η οποια παιρνει τισ τιμεσ και τισ καταχωρει σε ενα αρχειο τχτ.

αυτο που θελω είναι πωσ να δηλωσω τισ 2 μεταβλητεσ int Posotita και double Price (που ειναι αριθμοι) για να τισ περασω στο temp2[] και πωσ θα κανω ελεγχο ωστε οταν δωσω ιδιο Id να αυξανεται η ποσοτητα του συγκεκριμενου item δλδ να αποθηκεύει το ιδιο προιον με Posotita++

Μπορει να βοηθησει καποιοσ????????

 

 

>

package program;



/**
*
* @author AcerLaptop
*/
public class Items extends Pelatis{
   private String Id;
   private int Posotita;
   private String Perigrafi;
   private double Price;

   public void setId(String val){
       this.Id=val;
   }
   public String getId(){
       return Id;
   }
   public void setPosotita(int val){
       this.Posotita=val;
   }
   public int getPosotita(){
       return Posotita;
   }
   public void setPerigrafi(String val){
       this.Perigrafi=val;
   }
   public String getPerigrafi(){
       return Perigrafi;
   }
   public void setPrice(double val){
       this.Price=val;
   }
   public double getPrice(){
       return Price;
   }

   //me8odos perasmatos timwn stis metavlhtes ths Items

       public void addStoixeia() {

       int numberformat = 0;
       int numberdigits = 0;

// read in user input
       JTextField id = new JTextField();
       JTextField posotita = new JTextField();
       JTextField price = new JTextField();
       JTextField perigrafi = new JTextField();

       final JComponent[] inputs = new JComponent[]{
           new JLabel("Κωδικός"),
           id,
           new JLabel("Διαθέσιμη Ποσότητα"),
           posotita,
           new JLabel("Τιμή"),
           price,
           new JLabel("Περιγραφή"),
           perigrafi
       };

       //elegxos pws kapoio apo ta plaisia den einai kena
       

while (id.getText().equals("") || posotita.getText().equals("") || price.getText().equals("") ||
      perigrafi.getText().equals("") || numberformat == 1 || numberdigits == 1) {
           JOptionPane.showMessageDialog(null, inputs, "Add user", JOptionPane.PLAIN_MESSAGE);
           Id = id.getText();
           Posotita=****;
           Price =****;
           Perigrafi = perigrafi.getText();
           numberdigits = 0;
           numberformat = 0;



           if (id.getText().equals("") || posotita.getText().equals("") || price.getText().equals("") || perigrafi.getText().equals("") || numberformat == 1) {
               JOptionPane.showMessageDialog(null, "Θα πρέπει να συμπληρώσετε όλα τα πεδία!", "Απέτυχε", JOptionPane.WARNING_MESSAGE);
           }

           Id = id.getText();
           Posotita = *****
           Price = *********
           Perigrafi = perigrafi.getText();

       }
   }

       public String toString() {
       return String.format(getId() + "#" + getPosotita() + "#" + getPrice() + "#" + getPerigrafi());
   }

   //pros8hkh(append) mias grammhs String se arxeio .txt me onoma filename
   public void write2Txt(String temp2, String filename) {
       try {

           boolean append = true;
           FileWriter fw = new FileWriter(filename, append);

           fw.write(temp2 + "\n");//appends the string to the file
           fw.close();
       } catch (IOException ioe) {
           String message1 =
                   String.format(ioe.getMessage());
           JOptionPane.showMessageDialog(null, message1, "file save error", JOptionPane.WARNING_MESSAGE);
       }
   }


   public void modifyThing(String filename, String id) {

       try {
           boolean check = false;
           String tempfid = null;
           String tempfposotita=null;//gia perasma sthn findid
           int change = 1;
           // Open the file that is the first
           // command line parameter
           FileInputStream fstream = new FileInputStream(filename);
           // Get the object of DataInputStream
           DataInputStream in = new DataInputStream(fstream);
           BufferedReader br = new BufferedReader(new InputStreamReader(in));
           String strLine;
           //Read File Line By Line
           while ((strLine = br.readLine()) != null) {
               //append(save) se arxeio txt
               String[] temp2 = null;
               temp2 = lineDelimiter(strLine, 4, "#");  // se posa strings tha spasei px 4 edw


               if (temp2[0].equals(id) ) {
                   check = true;
                   Items itm = new Items();
                   itm.setId(temp2[0]);
                   
              itm.Posotita=********
             itm.setPrice************
                   itm.setPerigrafi(temp2[3]);

                   change = itm.showChangeDetails();
                   if (change == 0) {
                       itm.addStoixeia();
                       strLine = itm.toString();
//pairnei to id wste parakatw na elegksei an sto temp uparxei diplo-eggrafh
                       tempfid = itm.getId();
                       
                                           }
               }
               Items eggrafhstoarxeio = new Items();
               eggrafhstoarxeio.write2Txt(strLine, "temp1.txt");
               //dhmiourgia tou temp1.txt me allagmenh thn mia grammh

           }
           if (check == false) {
               String msg =
                       String.format("Δε βρέθηκε κανένα προϊόν με ID <" + id + " " + ">");
               JOptionPane.showMessageDialog(null, msg, "Modify professor - not found!", JOptionPane.WARNING_MESSAGE);
           }
           //Close the input stream
           in.close();
           String result3[] = findFullName("temp1.txt", tempfid);

           if (result3[1] != null)//an dld uparxoun 2 akrivws idies egrafes
           {
********  //Αν υπαρχει εγγραφη με το ιδιο ΙD θελω να αυξάνεται η ποσοτητα της ίδιασ εγγραφής δλδ Posotita ++
             
               String msg =
                       String.format("Το προϊόν με κωδικό :"+getId()+"υπάρχει"+"\n"+"η διαθέσιμη ποσότητα αυξήθηκε κατα 1");
               JOptionPane.showMessageDialog(null, msg, "Modify professor - already exists!", JOptionPane.ERROR_MESSAGE);
               File oldbackup = new File("temp1.txt");
               oldbackup.delete();

           }
           else {
               rename("temp1.txt", filename);
               if (change == 0) {
                   String msg = String.format("Η εγγραφή άλλαξε"); //an pathsw NO pio panw apla to emfanizei
                   JOptionPane.showMessageDialog(null, msg, "Modify professor - successfully changed!", JOptionPane.INFORMATION_MESSAGE);
               }
           }
       } catch (Exception e) {//Catch exception if any
           //System.err.println("Error: " + e.getMessage());
           String message1 =
                   String.format(e.getMessage());
           JOptionPane.showMessageDialog(null, message1, "file not found", JOptionPane.WARNING_MESSAGE);
       }

   }
}

Δημοσ.

>
try{
           Posotita = Integer.parseInt(posotita.getText());           
           Price = Double.parseDouble(price.getText());
           }catch(NumberFormatException nfe)
           {
               //Handle exception!
           }

 

Το ίδιο κάνεις και εδώ:

>
itm.setId(temp2[0]);
                   
              itm.Posotita = Integer.parseInt(temp2[1]);
              itm.setPrice = Double.parseDouble(temp2[2]);
              itm.setPerigrafi(temp2[3]);

 

Βάζεις άλλο ένα catch block πριν το γενικό που έχεις βάλει στο τέλος:

>
catch(NumberFormatException nfe)
           {
               //Handle exception!
           }
catch (Exception e) {//Catch exception if any
           //System.err.println("Error: " + e.getMessage());
           String message1 =
                   String.format(e.getMessage());
           JOptionPane.showMessageDialog(null, message1, "file not found", JOptionPane.WARNING_MESSAGE);
       }

Όσο για την ποσότητα αν κατάλαβα καλά πρέπει να την κάνεις static

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...