الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

مشكلة في الـ Map وعدم المقدرة على تعديل متغير

بدأه The.Eagle في 23 مارس 2013 · 4 رد · 1,128 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم 

 

لدي برنامج يقوم بحجز الباصات والمستخدم يحجز في الرحلة عدة باصات 

 

وعندما يقوم المستخدم بحجز عدد الباصات فان البرنامج يقوم بطرح العدد من المجموع الكلي للباصات 

 

و عندما ينتهي الحجز فان البرنامج يقوم باعادة وجمع العدد المحجوز مع اخر رقم للمجموع 

 

ولكن والمشلكة لدي أنه يزيد فوق المجموع الكلي وكـأني لم أقم بأي حجز 

 

مثال للتوضيح :

 

الشركة X لديها 50 باص

 

حجزت 20 باص : مجموع الباقي = 30 باص .

 

عندما ينتهي الحجز وادخل عدد الباصات - 20 باص - 

20 + 30 المفروض يكون الناتج = 50 .. ولكنه يظهر لي 70

 

 

استخدمت HashMap 

 

البرنامج عبارة عن 2 Frame و انقل البيانات بينها - طبعا بدون استخدام - DataBase -

 

 

 

public class Fleet implements Inventory {

    private String Id = "";
    private String Model = " ";
    private int seats = 0;
    private int count = 0;
    private String make = "";
    private final String newLine = "\n";
    
    
    public Fleet() {
    }

    public Fleet(String Id, String Model, int seats, int count, String make) {
        this.Id = Id;
        this.Model = Model;
        this.seats = seats;
        this.count = count;
        this.make = make;
    }

    public String getId() {
        return Id;
    }

    public String getModel() {
        return Model;
    }

    public int getSeats() {
        return seats;
    }

    public String getMake() {
        return make;
    }

    public void Mutators() {
    }

    public String Accessors() {
        return null;
    }
    @Override
    public String toString( ) {
        StringBuilder sb = new StringBuilder();
        sb.append("ID : ").append(this.getId()).append(newLine);
        sb.append("Model : ").append(this.getModel()).append(newLine);
        sb.append("Seats : ").append(this.getSeats()).append(newLine);
        sb.append("Counts : ").append(this.getCount()).append(newLine);
        sb.append("Make : ").append(this.getMake()).append(newLine);

        return sb.toString();
    }

    @Override
    public int getCount() {
        return count;
    }

    @Override
    public void addFleet(int count) {
        this.count += count;
    }

    @Override
    public void deleteFleet(int count) {
        if ((this.count - count) > 0) {
            this.count = this.count - count;
        } else {
            System.out.println("Negative inventory number error.");
        }
    }
}

 

 

 

 

class 2 

public class UserPage extends javax.swing.JFrame {
    static Fleet currentShirt  ;
    public  static List<FleetTransaction> transactions = new ArrayList<>();
   

    private void rent(String id, String model, String type, int count) {

        transactions.add(FleetTransaction.createTransection(id, model, type, count));
        for (FleetTransaction transaction : transactions) {
            if (AdminPage.getMap().containsKey(transaction.getID())) {
                currentShirt = AdminPage.getMap().get(transaction.getID());
            } else {
                System.out.println("Error: Invalid part number");
            }
            currentShirt = AdminPage.getMap().get(transaction.getID());
            switch (type) {
                case "return":
                    currentShirt.addFleet(transaction.getCounts());
                    break;
                case "rent":
                    currentShirt.deleteFleet(transaction.getCounts());
                    System.out.println("Rent");
                    break;
            }


        }
    }

 

 

class 3

 

public class FleetTransaction {

   private  String ID = "";
   private  String companyName = "";
   private  String transectionType = "";
   private  int count;

    public FleetTransaction() {
    }

    public FleetTransaction(String transectionID, String companyName, String transectionType, int count) {
        this.ID = transectionID;
        this.companyName = companyName;
        this.transectionType = transectionType;
        this.count = count;
    }

    public static FleetTransaction createTransection(String transectionID, String companyName, String transectionType, int count) {
        FleetTransaction newTransaction = new FleetTransaction(transectionID, companyName, transectionType, count);
        return newTransaction;

    }

    public String Accessors() {
        return null;
    }

    public String getID() {
        return ID;
    }

    public String getCompanyName() {
        return companyName;
    }

    public String getTransectionType() {
        return transectionType;
    }

    public int getCounts() {
        return count;
    }
}

 

واذا أردتم مزيد من التوضيح أخبروني عن النقطة الغير مفهومة 

 

بس باقي لي النقطة هذه وأنتهي من المشرووع  :yuppie: 
:thinking: صدع رااسي   :thinking:

تم تعديل هذه المشاركة بواسطة The.Eagle في 23 مارس 2013 في 21:34

#2

:mellow:  :mellow:  :mellow:  :mellow:

#3

من وجود السطر

 

System.out.println("rent");

 

افترض بانك قمت بوضع هذا السطر للتأكد من ان عملية الــ delete يتم تنفيذها ، لانه كما يبدو لي بإن عملية الاستعارة لا تتم، فعندما يتم عمل حجز لا يتم انقاص 20 من عدد الباصات ولكن عملية الارجاع تتم بشكل طبيعي بحيث انه يتم اضافة 20 على الــ 50 وتصبح 70 ، سؤالي هو هل تتم طباعة rent ؟ إذا كان نعم فعليك بتفحص قيمة الــ count الخاصة بالــ transaction ، داخل حلقة التكرار قم بفحص القيم الخاصة بالــ transaction كــ count, type للتأكد من انه يتم استعادة الــ transaction بشكل صحيح.

 

فقط بداعي الفضول لما قمت بكتابة هذا السطر مرتين؟

 

currentShirt = AdminPage.getMap().get(transaction.getID());

تم تعديل هذه المشاركة بواسطة mental-driller في 25 مارس 2013 في 00:30

No intellectual battle was ever won through retreat
You do not watch Gintama? Dude, you are missing a lot!


صورةmsrgb1485.gif ocajavase7programmerclr.gif

#4

بالاضافة الى الرد السابق ، من المسؤول عن تعبئة الmap ، لأنك تقوم بقرائة ما بها وهي لن تكون فارغه والا لكنت حصلت على NullPointerException بعد جملة else؟

 

if (AdminPage.getMap().containsKey(transaction.getID())) {
                currentShirt = AdminPage.getMap().get(transaction.getID());
            } else {
                System.out.println("Error: Invalid part number");
            }
            currentShirt = AdminPage.getMap().get(transaction.getID());

http://informatic-ar.com منصة تعليمية عربية في علوم الحاسب والبرمجة

https://moalfat.com  للكتب الالكترونية والكورسات التعليمية

Everything we see now is just an engineering solution based on old science

#5

 الأخ mental-driller
 

شكرا لردك 
بالنسبة لسؤالك الأول 
: فعملية الاستعارة تتم بالشكل المطلوب 
 

ولكن لا أعلم ما المشكلة 

 

ولسؤالك الثاني :

if (AdminPage.getMap().containsKey(transaction.getID())) {
                currentShirt = AdminPage.getMap().get(transaction.getID());
            } else {
                System.out.println("Error: Invalid part number");
            }

 

 

 

كتبتها لأجل أن أتحقق من أن جميع Id موجودة في الـ Map ولكني نسيت أن أمسحها 

 

 

 

 الأخ Wajdy Essam 

بالنسبة لسؤالك 

 

فالمسؤول عن تعبئة الـ Map

هو  الادمن من JFrame آخر 

 

 

=+=============================

يبدو أن شرحي للمشكلة أصعب من المشكلة نفسها هههههه :D

 

سأحاول حل المشكلة ..دعواتكم 

تم تعديل هذه المشاركة بواسطة The.Eagle في 25 مارس 2013 في 03:07

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…