如何用java2d数组解决这个问题



我正试图创建一个程序,将用户输入的名称和电子邮件存储在2d数组中。

为了进一步解释这个程序的目的,我必须提示用户输入2个选项的0,1或5。0表示结束程序。1表示提示用户输入姓名和电子邮件并存储在2d数组中,5表示打印出每对用户信息(即:姓名和电子邮件(。不过,这个代码的问题是,在用户输入姓名和电子邮件后,它会打印257次相同的姓名和电子邮件。我想让程序提示输入姓名和电子邮件,然后重新提示用户选择。

实际上,这就是我试图创建的:

array = {{name, email}, and so on..}

256次,因为这是我们可以拥有的最大用户数(或rolodex(。

此外,代码的另一个问题是,它用相同的名称和电子邮件填充了其余的数组元素。我希望它每次都能提示用户输入不同的名称和电子邮件对,并将其存储在变量中。

这是我的问题的代码:

Scanner in = new Scanner(System.in);
String[][] rolodex = new String[257][2];
System.out.println("Welcome!");
System.out.println("Please Select an option: ");
int choice = in.nextInt();
// in.nextLine();
while (choice != 0) {
if (choice == 1) {
System.out.println("Whats the name?");
String name = in.nextLine();
System.out.println("What the email!");
String email = in.nextLine();
for (int i = 0; i < rolodex.length; i++) {
rolodex[i][0] = name;
rolodex[i][1] = email;
}
}
if (choice == 5) {
for (int i = 0; i < rolodex.length; i++) {
System.out.println("email: " + rolodex[i][0]);
System.out.println("name: " + rolodex[i][1]);
System.out.println("--------------------");
}
}
System.out.println("Please select an option: ");
choice = in.nextInt();
in.nextLine();
}
System.out.println("Thank you! Have a nice day!");

这个代码的问题是中的问题

您需要一个额外的变量来存储数组中的当前位置。当你添加一个条目时,它应该是一次;而不是填充整个阵列。此外,您可以使用do while循环来减少代码中的重复。类似

Scanner in = new Scanner(System.in);
String[][] rolodex = new String[257][2];
System.out.println("Welcome!");
int choice;
int p = 0;
do {
System.out.println("Please select an option: ");
choice = in.nextInt();
in.nextLine();
if (choice == 1 && p < rolodex.length) {
System.out.println("Whats the name?");
rolodex[p][0] = in.nextLine();
System.out.println("Whats the email?");
rolodex[p][1] = in.nextLine();
p++;
} else if (choice == 5) {
for (int i = 0; i < p; i++) {
System.out.println("email: " + rolodex[i][1]); // email is [1]
System.out.println("name: " + rolodex[i][0]);
System.out.println("--------------------");
}
}
} while (choice != 0);
System.out.println("Thank you! Have a nice day!");

就我收到你的问题而言,我认为在你这样的情况下,最好使用Map而不是2d Array:

Map<String, String> rolodex = new TreeMap<>();

第一个字符串代表电子邮件(因为密钥不能重复(,第二个字符串代表名称。

存储在rolodex中,如下所示:

if (choice == 1){
System.out.println("Whats the name?");
String name = in.nextLine();
System.out.println("What the email!");
String email = in.nextLine();
rolodex.put(email, name);
}

从rolodex获取数据,如下所示:

if(choice == 5){
for(String email: rolodex.keySet())
System.out.println("email: " + email);
System.out.println("name: " + rolodex.get(email));
System.out.println("--------------------");
}      
}

我不太确定你对Java的了解程度,但如果地图没有告诉你什么,也许可以看YouTube教程来更好地理解它:D

相关内容

  • 没有找到相关文章