首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

关于通信录有关问题,请来看一下

2011-12-03 
关于通信录问题,请高手进来看一下出现的问题如下:1.在增加方法中,执行第二次增加操作时,会出现两个“请输入

关于通信录问题,请高手进来看一下
出现的问题如下: 
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:电话");


  System.out.println("4:通信地址");
  System.out.print("请选择需要修改的内容: ");
  int c = in.nextInt(); 
  System.out.println("请输入:");
  String s = in.nextLine();
  list[i - 1][c] = s;
  if(list[i][c] == s)
  {
  System.out.println("修改完成");
  display();
  }
 }
   
  public void remove() //删除
  {
  System.out.println("请输入你想要删除的编号(1、2、3……):");
  int k = in.nextInt();
  if(k > list.length || list[k - 1][0] == " ")
  System.out.println("无可删除的信息!");
  else
  {
  int j = 0;
  for(; j < list[k].length; j++)
  {
  list[k - 1][j] = " ";
  }
  if(j == 5 )
  System.out.println("删除成功");
  display();
  }
  }
   
  public void exit() //退出
  {
  System.out.println("欢迎使用!");
  System.exit(0);
  }

  public static void main(String[] args)
  {
List alist = new List();
alist.start();
  }
  private int n = 3;
  private Scanner in = new Scanner(System.in);  
}
  

   
   
   
   
   
   
   
 

[解决办法]
大概看了LZ的代码
1. 
if(list[n][0] == " ") 改为 if (list[n][0].equals(" "))
2. 
for(int j = 0; j < 5; j++) 


list[n][j] = in.next(); //空格为分隔符 
if(j == 4) 

System.out.println("增加成功!"); 
display(); 




改为
//for(int j = 0; j < 5; j++) 
// { 

// list[n][j] = in.next(); //空格为分隔符 
// if(j == 4) 
// { 
// System.out.println("增加成功!"); 
// display(); 
// } 
//
// } 

String s = in.next(); //空格为分隔符
String[] v = s.split(" ");
if (v.length > 5) {
System.copyarray(list[n], v, v.length);
} else {
System.copyarray(list[n], v, v.length);
for (int j=v.length; j<5; j++) list[n][j] = " ";
}
//if (v.length > 0) { //这个判断表示有数据输入
System.out.println("增加成功!"); 
display(); 
//}

3.
String s = in.nextLine(); 改为 String s = in.next(); 


热点排行