提问人:Zhe Hin Yap 提问时间:12/8/2022 更新时间:12/8/2022 访问量:46
为什么我的代码无法识别添加到数组中的元素?[已结束]
Why doesn't my code recognize the element added to the array? [closed]
问:
因此,我正在制作一个程序,可以从 2d 数组中添加、编辑和删除记录。
我添加数组所做的是通过 Scanner 收集用户的输入,然后将其转换为数组,然后使用 java.utils.Arrays 复制数组,然后覆盖原始数组
这是通过以下代码完成的:
static String[][] AssManager = {
{"Natasha Binti Iman Raman", "[email protected]", "0123659546", "nat123"},
{"Navid Ali Khan", "[email protected]", "0114665985", "navid123"},
{"Tan Zheng Shen", "[email protected]", "0165846598", "dex123"},
{"Teh Wei Shen", "[email protected]", "0161254925", "wei123"}
};
Scanner inp = new Scanner(System.in);
String[] role = {
"",
"",
"",
""
};
System.out.println("Please enter the name.");
role[0] = inp.nextLine();
System.out.println("Please enter the email");
role[1] = inp.nextLine();
System.out.println("Please enter the phone number");
role [2] = inp.nextLine();
System.out.println("Please enter the password");
role[3] = inp.nextLine();
AssManager = Arrays.copyOf(AssManager, AssManager.length + 1);
AssManager[AssManager.length-1] = role;
至于编辑和删除,我通过收集用户的输入来确定要删除的数组,然后检查特定行是否确实存在。如果它不存在,那么它将打印出一个语句。如果它存在,它将允许我修改或删除特定行。
我面临的困难是,在检查行时,它只识别已经存在的虚拟数据,而不能识别新制作的行。
这是用于检查该行是否存在的代码:
boolean existing = false;
for (int i = 0 ; i < AssManager.length - 1; i++) {
if (name.equals(AssManager[i][0])){
existing = true;
}
我通过程序制作的任何行都会被忽略,并且我会得到特定行不存在的声明。
我试图在使用 java.util.Arrays 时制作同一数组的更多副本,但无济于事。我也尝试在其他地方搜索我的问题,但我找不到任何可能对我有帮助的解决方案。
我很感激任何形式的建议。
答:
0赞
RainerZufall
12/8/2022
#1
使用二维数组有什么具体原因吗?它使事情变得不必要地复杂。
我建议你使用ArrayList。这使得添加、删除甚至替换变得更加容易。
此外,您应该为姓名、电子邮件、电话号码和密码信息创建某种实体。
评论
0赞
Zhe Hin Yap
12/8/2022
与二维数组相比,我不完全确定我是否能够执行与我在 ArrayList 中已经完成的工作相同的操作。另外,我正在学习Java,我的讲师没有教过我们关于实体的知识,所以我甚至没有想过使用实体作为存储信息的一种方式。话虽如此,我在我的代码中发现了错误,这要归功于 OH GOD SPIDERS。感谢您的见解和建议。
评论
i < AssManager.length - 1;
<- 如果你的数组长度为 5,则从 0 迭代到 3,缺少最后一个索引 4。删除 或更改为- 1
<
<=