2013-10-17 2 views
0

나는 전에 비슷한 질문을했지만 문제가 무엇인지 알 수 없었다. 나는 프로그래밍에 익숙하지 않고 초기 길이를 변수로 설정하여 배열의 길이를 변경하는 방법에 대해 혼란 스럽지만 업데이트하지는 않습니다.배열의 길이를 변경하는 방법

내 코드 :

import java.util.Scanner; 

class computer{ 

    int g = 1; //create int g = 2 
    int[] compguess = new int[g]; //set array compguess = 2 

    void guess(){ 

     int rand; //create int rand 
     int i; //create int i 
     rand = (int) Math.ceil(Math.random()*10); // set rand = # 1-10 
     for (i = 0; i < compguess.length; i++){  // start if i < the L of the []-1 (1) 

      if(rand == compguess[i]){ //if rand is equal to the Ith term, break the for loop 
       break; 
      } 
     } //end of for loop 
     if(i == compguess.length - 1){ //if i is = the length of the [] - 1: 
      compguess[g - 1] = rand; // set the new last term in the [] = rand 
      g++; // add 1 to the length of the [] to make room for another int 
      System.out.println(compguess[g - 1]); // print the last term 
     } 
    } 
} 

public class game1player2 { 

    public static void main(String[] args) { 
     Scanner input = new Scanner(System.in); 
     computer computer1 = new computer(); // create new computer object 
     for(int a = 0; a < 3; a++){  // start if a < 3 
      computer1.guess();  // start guess method 
      for(int n = 0; n < computer1.compguess.length; n++) //print the contents of [] 
      System.out.println(computer1.compguess[n]);  // print out entire array 
     } 
     { 
      input.close(); 
     } 
    } 
} 
+1

이전 질문을 무시하고 배열의 길이를 전혀 변경할 필요가 없습니다. 1과 10 사이의 숫자가 이전에 추측되었는지 알고 싶기 때문에 길이가 10 인 ** 부울 ** 배열을 가져야합니다. 숫자가 'n'이라고 추측되는 경우 인덱스의 값을 n - 1 '사실. 배열의 값이 이미 참이면 다시 추측하지 마십시오. –

+1

배열의 길이를 알 수없는 경우 ArrayList를 사용하십시오. –

답변

0

당신은 자바에서 배열의 길이를 변경할 수 없습니다. 새 값을 만들어 값을 복사하거나 ArrayList을 사용해야합니다.

2

배열을 Java에서 만든 후 길이를 변경할 수있는 방법이 없습니다. 대신 새로운 큰 배열을 할당해야하며 요소는 복사해야합니다. 다행히도 이미 사용자의 입장에서이 작업을 수행하는 List 인터페이스 구현이 있으며 가장 일반적인 것은 ArrayList입니다.

이름에서 알 수 있듯이 ArrayList은 배열을 래핑하여 add()remove()과 같은 메서드를 통해 요소를 추가/제거하는 방법을 제공합니다 (앞에서 링크 된 설명서 참조). 내부 배열이 채워지면 1.5x보다 큰 새 배열이 만들어지고 이전 요소가 복사됩니다. 그러나이 배열은 모두 숨겨져있어서 매우 편리합니다.

1

대신 arrayList를 사용하는 것이 좋습니다. 필요에 따라 크기가 조정됩니다. java.util.ArrayList을 가져온 후 ArrayList<Integer> list=new ArrayList<>();을 사용하여 만듭니다.

다음과 같이 값을 설정할 수 있습니다. 내가 val 값으로 위치 값을 설정하려면 사용

list.set(i, val); 

당신은 list.add(someInt);과 끝에 추가하고 int foo=list.get(position)으로 검색 할 수 있습니다.

"크기 조정"은 더 큰 것으로 복사하는 것만 가능합니다. 그 여전히 장소에서 작동하는 대신 새 배열을 생성합니다. int ~ Integer 개의 전환은 여기에서 자동 저장으로 처리됩니다.

+2

배열 크기를 조정할 수 없습니다. 각주에는 미리 할당 된 배열의 크기가 조정되는 것이 아니라 * 새로운 * 더 큰 배열을 만드는 것이 포함됩니다. – arshajii

+0

@arshajii 죄송합니다. 수정에서 수정이 추가되었습니다. – hexafraction

0

다른 사람들도 지적했듯이 ArrayList를 사용하지 마십시오.

관련 문제