簡體   English   中英

getter和setter方法不能正常工作

[英]getter and setter method not working as it should

在我發布的這個程序中,當我調用(setter函數)即。 主函數中的obj.setsize(res)比不能更改(“contact_entry”類)中聲明的變量“size”的私有int size = 2到size = 1的值。

當我調用(getter函數)ie時,該值保持為2。 主程序中的obj.getsize(),在if(obj.getsize()> 0)中。當調用set方法時,應該將變量“size”的值設置為但是它不能修改“大小保持不變”的價值和價值。

請讓我知道我會感激的問題。

    import javax.swing.JOptionPane;
    public class nokia {

        public static void main(String[] args) 
        {
            int itr=0;

            while(itr==JOptionPane.YES_OPTION)
            {
                String s3=JOptionPane.showInputDialog("Enter your option\nEnter 1 to add contact\nEnter 2 to delete contact\nEnter 3 to display contact" +
                    "\nEnter 4 to search a contact detail\nEnter 5 to exit");
                switch(s3)
                {
                case "1":
                {
                    contact_entry obj=new contact_entry();
                    if(obj.getsize()>0)
                    {
                        obj.add_contact();
                        int res=obj.getsize()-1;
                        obj.setsize(res);
                    }
                    else
                        JOptionPane.showMessageDialog(null, "MEMORY FULL....NO MORE CONTACTS CAN BE ADDED");
                    break;
                }

                case "2":
                }

            }
        }

    }

    class contact_entry
    {
        private String fst_nme;
        private String lst_nme;
        private long [] mo_no=new long[3];
        private int[] hme_no=new int[3];
        private int size=2;

        public contact_entry()
        {
            fst_nme="ron";
            lst_nme="capton";
            mo_no[0]=mo_no[1]=mo_no[2]=0;
            hme_no[0]=hme_no[1]=hme_no[2]=0;

        }

        public void add_contact()
        {
            fst_nme=JOptionPane.showInputDialog("Enter the first name: ");
            lst_nme=JOptionPane.showInputDialog("Enter last name: ");

            int itr=0,itr1=0;
            for(int i=0;itr==JOptionPane.YES_OPTION;i++)
            {
                if (i>2)
                {
                    JOptionPane.showMessageDialog(null,"NO MORE MOBILE NUMBER CAN BE ADDED...MEMORY FULL");
                    break;
                }
                String s1=JOptionPane.showInputDialog("Enter mobile number: ");
                mo_no[i]=Long.parseLong(s1);
                itr=JOptionPane.showConfirmDialog(null, "Do you want to add addtional contact number");

            }

            for(int i=0;itr1==JOptionPane.YES_OPTION ;i++)
            {
                if(i>2)
                {
                    JOptionPane.showMessageDialog(null, "NO MORE PHONE NUMBER CAN BE ADDED....MEMORY FULL");
                    break;
                }
                String s2=JOptionPane.showInputDialog("Enter phone number: ");
                hme_no[i]=Integer.parseInt(s2);
                itr1=JOptionPane.showConfirmDialog(null, "DO you want to add more contact number");

            }   
        }

        public void display()
        {
            String output= "First Name: "+fst_nme+"\nLast name: "+lst_nme+"\nmobile number1: "+mo_no[0]+"\nmobile number2: "+mo_no[1]+
                    "\nmobile number3: "+mo_no[2]+"\nphone number1: "+hme_no[0]+"\nphone number2: "+hme_no[1]+"\nphone number3: "+hme_no[2];
            JOptionPane.showMessageDialog(null, output);
        }

        public int getsize()
        {
            JOptionPane.showMessageDialog(null, size);
            return size;
        }

        public void setsize(int size1)
        {
            this.size=size1;
            JOptionPane.showMessageDialog(null, size);
        }
       } 

我無法用你的代碼重現這一點。 注釋掉add_contact (因為它不相關)我看到三個對話框:

  • 2(第一次調用getsize()
  • 2(第二次調用getsize()
  • 1(調用setsize()

所以這的值設置size為1。

請注意,當您循環並創建一個新的 contact_entry實例時,其大小為2 ...是什么讓您感到困惑?

(順便說一句,你應該真正嘗試遵循Java命名約定。你的代碼目前是非常單一的。)

您正在每個循環中創建新的contact_entry對象。 所以每次你有一個size = 2新對象。 而且你正在添加新的聯系人。 因此,您沒有在contact_entry對象中看到增加的聯系人。 在循環之前創建該對象。

我想你不想做的是設置一個可以添加的聯系人數量的限制。

現在您將size聲明為contact_entry的實例變量。 要使它工作,它應該是一個類變量(這樣每個對象都是一樣的)。

但請不要這樣做,因為它只是簡單的丑陋設計。

你可以做的是在你的諾基亞上制作一個集合,並對它進行一些限制。

每次創建新的聯系人條目時,首先檢查集合是否已滿,如果沒有,則將其添加到集合中。

該值被設置為1,但是對象obj超出范圍,一旦它離開case語句,所以一旦你創建一個新的obj ,它將被重置為“2”,按照默認值,班級本身。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM