0

私が投稿しているこのプログラムでは、(セッター関数)を呼び出すと. メイン関数の obj.setsize(res) よりも、(クラス "contact_entry" で宣言された変数 "size") private int size=2 の値を size=1 に変更することはできません。

(ゲッター関数)を呼び出すと、値は2のままです。メインプログラムの obj.getsize() では、if(obj.getsize()>0).set メソッドが呼び出されたときに、変数の値を「サイズを 1」に設定する必要がありますが、変更することはできません。値と「サイズは変更されません」の値。

ありがたい問題を教えてください。

    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);
        }
       } 
4

4 に答える 4

1

contact_entry各ループで新しいオブジェクトを作成しています。したがって、新しいオブジェクトを作成するたびにsize = 2. そして、それに新しい連絡先を追加しています。したがって、contact_entry オブジェクトで連絡先が増えていることはわかりません。ループの前にそのオブジェクトを作成します。

于 2012-05-31T07:33:57.737 に答える
1

あなたのコードではこれを再現できません。コメント アウトadd_contact(関係ないため) すると、次の 3 つのダイアログ ボックスが表示されます。

  • 2 ( への最初の呼び出しgetsize())
  • 2 ( への 2 回目の呼び出しgetsize())
  • 1 ( への呼び出しsetsize())

そのため、 の値を 1 に設定していますsize

ループして新しい contact_entryインスタンスを作成すると、サイズが 2 になることに注意してください。

(ちなみに、 Java の命名規則に従うようにしてください。現時点では、コードは非常に単調です。)

于 2012-05-31T07:21:40.900 に答える
0

あなたがやりたくないことは、追加できる連絡先の量に制限を設定することだと思います.

size を contact_entry のインスタンス変数として宣言しました。それが機能するには、クラス変数である必要があります(すべてのオブジェクトで同じになるように)。

しかし、これは単純に醜いデザインなので、しないでください。

あなたができることは、あなたのノキアでコレクションを作成し、それにいくつかの制限を課すことです.

新しい連絡先エントリを作成するたびに、まずコレクションが既にいっぱいになっているかどうかを確認し、そうでない場合はコレクションに追加します。

于 2012-05-31T07:33:14.170 に答える
0

値は 1 に設定されていますが、オブジェクトobjは case ステートメントを離れるとすぐに範囲外になるためobj、クラスでデフォルト値に従って新しい を作成すると、「2」にリセットされます。自体。

于 2012-05-31T07:41:15.663 に答える