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