Java 如何删除数组中的元素?
我很难删除数组中的元素。我已经试了一段时间了,我正在用头撞桌子,试图弄明白这一点。我将非常感谢任何帮助Java 如何删除数组中的元素?,java,arrays,Java,Arrays,我很难删除数组中的元素。我已经试了一段时间了,我正在用头撞桌子,试图弄明白这一点。我将非常感谢任何帮助 package javaapplication9; import java.util.Scanner; import java.util.ArrayList; public class JavaApplication9 { int x; final int maxContacts = 3; final String[] FIRSTNAME = { "Josh", "J
package javaapplication9;
import java.util.Scanner;
import java.util.ArrayList;
public class JavaApplication9 {
int x;
final int maxContacts = 3;
final String[] FIRSTNAME = { "Josh", "Joe", "Jim" };
final String[] LASTNAME = { "Jones", "Smith", "Thomas" };
final String[] ADDRESS =
{ "142 Washington Ave", "500 Main St", "200 Oak Way" };
final String[] CITY = { "Pittsburgh", "Pittsburgh", "Pittsburgh" };
final String[] STATE = { "PA", "PA", "PA" };
final String[] ZIP = { "15222", "15222", "15222" };
final String[] TELEPHONE =
{ "412-722-1500", "412-498-2500", "412-787-3500" };
String[]firstName = new String[3];
String[]lastName = new String[3];
String[]address = new String[3];
String[]city = new String[3];
String[]state = new String[3];
String[]zip = new String[3];
String[]telephone = new String[3];
String nameSearch;
boolean firstNameFound = true, lastNameFound = true, addressFound =
true, cityFound = true, stateFound = true, zipFound =
true, telephoneFound = true;
Scanner keyboard = new Scanner(System.in);
public void getInfo() {
while (x < maxContacts) {
Scanner input = new Scanner(System.in);
System.out.
println
("Enter '1' To Add A Contact \nEnter '2' To Delete A Contact \nEnter '3' To Search For A Name \nEnter '4' To Display All Contacts \nEnter 'Q' To Quit");
int usersChoice = input.nextInt();
if (usersChoice == 1) {
System.out.print("Please enter a first name: ");
firstName[x] = keyboard.nextLine();
if (firstNameFound) {
System.out.
print("Please enter a last name: ");
lastName[x] = keyboard.nextLine();
}
if (lastNameFound) {
System.out.
print("Please enter an address: ");
address[x] = keyboard.nextLine();
}
if (addressFound) {
System.out.
print("Please enter a city: ");
city[x] = keyboard.nextLine();
}
if (cityFound) {
System.out.
print("Please enter a state: ");
state[x] = keyboard.nextLine();
}
if (stateFound) {
System.out.
print("Please enter a zip: ");
zip[x] = keyboard.nextLine();
}
if (zipFound) {
System.out.
print
("Please enter a telephone number: ");
telephone[x] = keyboard.nextLine();
}
}
if (usersChoice == 4) {
System.out.println("\nList Of Contacts");
System.out.
println("------------------------------");
for (int i = 0; i < FIRSTNAME.length; i++) {
System.out.println("First Name: " +
FIRSTNAME[i] +
"\nLast Name: " +
LASTNAME[i] +
"\nAddress: " +
ADDRESS[i]
+ "\nCity: " +
CITY[i] +
"\nState: " +
STATE[i] +
"\nZip: " + ZIP[i] +
"\nTelephone: " +
TELEPHONE[i] +
"\n-------------------------\n");
}
for (int i = 0; i < firstName.length; i++) {
System.out.println("First Name: " +
firstName[i] +
"\nLast Name: " +
lastName[i] +
"\nAddress: " +
address[i]
+ "\nCity: " +
city[i] +
"\nState: " +
state[i] +
"\nZip: " + zip[i] +
"\nTelephone: " +
telephone[i]);
}
}
if (usersChoice == 3) {
System.out.print("\n\nPlease enter a name to find ");
// no idea how to
// search a name and
// display the
// corresponding
// number!
nameSearch = keyboard.next();
for (int i = 0; i < firstName.length; i++) {
if (nameSearch.equals(firstName[i])) {
System.out.println("The name " +
firstName[i]
+
" was found "
+
"with the phone number "
+
firstName
[i]);
}
}
}
}
}
public static void main(String args[]) {
JavaApplication9 show = new JavaApplication9();
show.getInfo();
}
}
您应该使用集合,例如ArrayList,而不是数组。在java中,数组的大小是固定的,它们不是动态的
如果您确实想要删除并保留一个数组,这不是一个好主意,那么您应该使用null作为sentinel值,这意味着null元素被删除。然后,您必须更改您的其他方法,以便在程序的所有其他方面尊重null的含义
使用ArrayList…如果您实际上仍然必须使用数组,您可以从数组中删除项目,这是一种建设性的方式。您所需要做的就是创建一个比原始数组小一倍的新数组,并将所有相关项复制到新数组中。我编写了一个示例,演示如何从数组中删除项 代码如下:
希望这有帮助。您要从哪个阵列中删除?您是如何尝试从中删除的?你能在一个十行程序而不是这堵代码墙中重现你的问题吗?在这段代码中没有真正的删除尝试,它将成为最后一条if-else语句,以防userChoice为2读取getInfo开头的菜单选项