在我发布的这个程序中,当我调用(setter函数)即。主函数中的obj.setsize(res)比不能更改(“contact_entry”类)中声明的变量“size”的私有int size = 2到size = 1的值。
当我调用(getter函数)时,值仍为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);
}
}
答案 0 :(得分:1)
我无法使用您的代码重现这一点。评论add_contact
(因为它无关紧要)我看到三个对话框:
getsize()
)getsize()
)setsize()
)因此 将size
的值设置为1。
请注意,当您循环并创建一个新 contact_entry
实例时,其大小为2 ...是什么让您感到困惑?
(顺便说一句,你应该真的尝试遵循Java命名约定。你的代码目前非常简单。)
答案 1 :(得分:1)
您正在每个循环中创建新的contact_entry
对象。所以每次你有size = 2
的新对象。而且你正在添加新的联系人。因此,您没有在contact_entry对象中看到增加的联系人。在循环之前创建该对象。
答案 2 :(得分:0)
我想你不想做的是设置一个可以添加的联系人数量的限制。
现在您将size声明为contact_entry的实例变量。为了使它工作,它应该是一个类变量(这样每个对象都是一样的。)
但请不要这样做,因为它只是简单的丑陋设计。
你可以做的就是在你的诺基亚上制作一个收藏品并加以限制。
每当您创建新的联系人条目时,首先检查该集合是否已满,如果没有,则将其添加到集合中。
答案 3 :(得分:0)
该值设置为1,但是对象obj
一旦离开范围语句就超出范围,因此在创建新的{{1}后它将重置为“2” 1}},按照默认值,在类本身中。