为什么我的代码无法识别添加到数组中的元素?[已结束]

Why doesn't my code recognize the element added to the array? [closed]

提问人:Zhe Hin Yap 提问时间:12/8/2022 更新时间:12/8/2022 访问量:46

问:


这个问题是由一个错别字或一个无法再重现的问题引起的。虽然类似的问题可能在这里成为主题,但这个问题的解决方式不太可能帮助未来的读者。

12个月前关闭。

因此,我正在制作一个程序,可以从 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 时制作同一数组的更多副本,但无济于事。我也尝试在其他地方搜索我的问题,但我找不到任何可能对我有帮助的解决方案。

我很感激任何形式的建议。

Java 多维数组 java.util.scanner

评论

3赞 12/8/2022
i < AssManager.length - 1;<- 如果你的数组长度为 5,则从 0 迭代到 3,缺少最后一个索引 4。删除 或更改为- 1<<=
0赞 Zhe Hin Yap 12/8/2022
@OHGODSPIDERS 谢谢你指出我的错误。我在代码的另一部分遇到了完全相同的问题,并在没有帮助的情况下修复了它,但我没有设法看穿我在这部分代码中的粗心错误......好尴尬哈哈

答:

0赞 RainerZufall 12/8/2022 #1

使用二维数组有什么具体原因吗?它使事情变得不必要地复杂。
我建议你使用ArrayList。这使得添加、删除甚至替换变得更加容易。
此外,您应该为姓名、电子邮件、电话号码和密码信息创建某种实体。

评论

0赞 Zhe Hin Yap 12/8/2022
与二维数组相比,我不完全确定我是否能够执行与我在 ArrayList 中已经完成的工作相同的操作。另外,我正在学习Java,我的讲师没有教过我们关于实体的知识,所以我甚至没有想过使用实体作为存储信息的一种方式。话虽如此,我在我的代码中发现了错误,这要归功于 OH GOD SPIDERS。感谢您的见解和建议。