我很难删除数组中的元素。我已经尝试了一段时间,我正在打着桌子试图解决这个问题。我非常感谢任何帮助。
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();
}
}
答案 0 :(得分:3)
您应该使用Collection
,例如ArrayList
,而不是数组。数组在java中具有固定的大小,它们并不是动态的。
如果你真的想“删除”并保留一个数组(这不是一个好主意),那么你应该使用null
作为标记值,这意味着null
元素被“删除” ”。然后,您必须更改其他方法,以在程序的其他方面尊重null
的含义。
使用ArrayList
...
答案 1 :(得分:0)
如果您实际上仍然需要使用数组,则可以建设性地从数组中删除项目。您只需创建一个新数组,该数组将比原始数组小一个,并将所有相关项复制到新数组中。我写了一个示例,演示如何从数组中删除项目。
代码在这里:http://pastebin.com/irnznxCA
希望有所帮助..