2013-01-20 3 views
1

이것이 맞는지 나는 모른다. 그래서 나는 당신의 의견이 필요하다. 직원 이름 배열이 있습니다. 콘솔에 표시되고 사용자가 다른 이름을 삽입 할 것인지 묻는 메시지가 표시됩니다. 이름은 배열 끝 (인덱스 4)에 추가되어야하며 배열을 다시 표시하지만 이미 새 이름이 추가됩니다. 어떻게해야합니까? Btw, 여기 내 코드가있다. 그리고 나는 붙어있다. null을 쓰는 것이 유효한지 모르겠다.배열 끝 부분에 요소를 추가하려면 어떻게합니까?

public static void list() { 
    String[] employees = new String[5]; 
    employees[0] = "egay"; 
    employees[1] = "ciara"; 
    employees[2] = "alura"; 
    employees[3] = "flora"; 
    employees[4] = null; 

    for(int i = 0; i < employees.length; i++) { 
     System.out.println(employees[i]); 
    } 
} 
public static void toDo() { 
    Scanner input = new Scanner(System.in); 
    System.out.println("What do you want to do?"); 
    System.out.println("1 Insert"); 
    int choice = input.nextInt(); 

    if(choice == 1) { 
     System.out.print("Enter name: "); 
     String name = input.nextLine(); 
+0

배열 대신 다른 구조체 (예 : java.util.ArrayList)를 사용해야합니다. 배열의 크기는 변경할 수 없지만 ArrayList는 변경할 수 있습니다. 배열 만 사용하려면 배열을 다시 생성해야하지만 다른 구조는 최상의 선택입니다. –

+0

ArrayList 을 사용해야합니다. – SLaks

+0

이것은 기본적으로 http://stackoverflow.com/questions/7939154/how-to-add-elements-in-array와 같은 질문입니다. – 808sound

답변

5

기본적으로 할 수 없습니다.

배열은 구성되었을 때 고정 크기입니다. 필요한 크기의 새 배열을 만들고 기존 요소를 모두 복사 한 다음 새 요소를 복사하거나 ArrayList<String>과 같이 List<String> 구현을 대신 사용할 수 있습니다. 후자의 접근 방법을 강력히 권합니다.

collections tutorial을 읽고 Java에서 사용할 수있는 다양한 컬렉션에 대해 자세히 알아보십시오.

list 방법에서 현재 로컬 변수가 있습니다. 대체로 필드이 필요합니다. 이상적으로 인스턴스 필드 (예 : Company 또는 유사한 이름의 클래스) - 실험하는 경우 지금은 static 필드를 사용할 수 있습니다. 정적 필드는 의 전역 상태을 나타내며 일반적으로 가변 값에 대한 나쁜 생각이지만 모든 메소드가 정적 인 것처럼 보입니다.

1

배열의 크기는 고정되어 있습니다. 신고하면 크기를 수정할 수 없습니다.

콜렉션 java.util.List 또는 java.util.Set을 사용하십시오. 예 ArrayList 동적으로 성장 가능하고 배열로 뒷받침됩니다.

1

실제로 배열을 사용해야하는 경우 중간 복사본을 사용하여 배열의 크기를 늘려야합니다.

String[] array = new String[employees.length + 1]; 
System.arraycopy(employees, 0, array, 0, employees.length); 
array[employees.length] = newName; 
employees = array; 

그러나 가장 좋은 방법은 List 구현을 사용하는 것입니다.

0

사용자가 4 자 이상의 직원 이름을 입력 할 수 있는지 여부에 따라 다릅니다. 그들이 할 수 있다면 ArrayList를 사용하는 것이 더 좋습니다. 또한 직원 변수는 정적 메서드에서 사용되기 때문에 클래스의 정적 속성이어야합니다.

private static String[] employees = new String[5]; 

static { 
    employees[0] = "egay"; 
    employees[1] = "ciara"; 
    employees[2] = "alura"; 
    employees[3] = "flora"; 
    employees[4] = null; 
} 

public static void list() { 
    for(int i = 0; i < employees.length; i++) { 
     System.out.println(employees[i]); 
    } 
} 

public static void addEmployeeName(String name, int index) { 
    employees[index] = name; 
} 
0
여기

당신이 creation.I시 고정되어 정적 배열을 사용하면 동적 배열의 당신 시설을 제공합니다 인 java.util.ArrayList를 사용한다고 생각합니다.

관련 문제