日期:2014-05-20  浏览次数:20875 次

关于通信录问题,请高手进来看一下
出现的问题如下: 
1.在增加方法中,执行第二次增加操作时,会出现两个“请输入:”。 
2.在增加方法中,如果改为 list[n][j] = in.nextLine(); 应按怎样格式输入才正确? 
3.在修改方法中, 执行到“请输入:”这一步时,还没等你输入就返回到主菜单。 

我用的是Eclipse,暂时发现这个程序有这3个问题。请教高手这3个问题应如何解决,顺便看一下程序设计上有何不妥之处, 
我学JAVA才一个多月,所以请多多指正。 


源程序如下:
[code=Java][/code]
import java.util.*;

public class List
{
String[][] list = 
  { 
  {"01", "AAA", "男", "123456", "北京"},
  {"02", "BBB", "女", "456789", "福建"},
  {"03", "CCC", "男", "333333", "广东"},
  {" ", " ", " ", " ", " "},
  {" ", " ", " ", " ", " "}
  };

public void start() //主菜单
{
  while(true)
{
System.out.println("1.查询\n" + "2.增加\n" + "3.修改\n" + "4.删除\n" +"5.退出");
System.out.print("请输入操作(1-5): ");
int ch = in.nextInt();
switch(ch)
{
case 1: query();
break;
case 2: add();
break;
case 3: modify();
break;
case 4: remove();
break;
case 5: exit();
break;
}
}
}
public void display() //每一次操作后都显示一遍
{
System.out.println("编号" + " " + "姓名" + " " + "性别" + " " + "电话" + " " +
"地址" );
for(int i = 0; i < list.length; i++)
{
for(int j = 0; j < list[i].length; j++)
{
System.out.print(list[i][j] + " ");
}
System.out.println();
}
}
 

  public void query() //查询
  {
  System.out.println("请输入你想查询的编号(1、2、3……): ");
  int j = in.nextInt();
   
  if(j > list.length || list[j - 1][0] == " ")
  {
  System.out.println("无此信息");
  query();
  }
  else
  {
  System.out.println("你想查询的信息在第" + j + "行");
  display();
  return;
  }
 
}
   
  public void add() //增加
  {
  if(n > 4)
  {
  System.out.println("通信录已满");
  return;
  }
  System.out.print("请输入:");
  if(list[n][0] == " ")
  {
 
  for(int j = 0; j < 5; j++)
  {
   
  list[n][j] = in.next(); //空格为分隔符
  if(j == 4)
  {
  System.out.println("增加成功!");
  display();
  }
   
  }
   
  }
  else 
  {
  n++;
  add();
  }
   
 
  }
   
  public void modify() //修改
  {
  System.out.print("请输入你想要修改的编号(1、2、3……):");
  int i = in.nextInt();
  System.out.println("1:姓名");
  System.out.println("2:性别");
  System.out.println("3:电话");