2012-01-24 6 views
0
import java.util.ArrayList; 
import java.util.Random; 

public class Generator{ 
//9352141NTBG1223 

public static void main(String[] args) { 
    ArrayList<Integer> intArray = new ArrayList<Integer>(); 
    ArrayList<Integer> int2Array = new ArrayList<Integer>(); 
    ArrayList<Character> charArray = new ArrayList<Character>(); 

    int one = 0; 
    int two = 0; 
    int three = 0; 
    int four = 0; 
    int five = 0; 
    int six = 0; 
    int seven = 0; 
    int N_one = 0; 
    int N_two = 0; 
    int N_three = 0; 
    int N_four = 0; 
    Character Middle1 = 'A'; 
    Character Middle2 = 'A'; 
    Character Middle3 = 'A'; 
    Character Middle4 = 'A'; 

    Random gen1 = new Random(); 

    charArray.add(Middle1); 
    charArray.add(Middle2); 
    charArray.add(Middle3); 
    charArray.add(Middle4); 
    intArray.add(one); 
    intArray.add(two); 
    intArray.add(three); 
    intArray.add(four); 
    intArray.add(five); 
    intArray.add(six); 
    intArray.add(seven); 
    int2Array.add(N_one); 
    int2Array.add(N_two); 
    int2Array.add(N_three); 
    int2Array.add(N_four); 

    for(int i: intArray) { 
    int k = gen1.nextInt(10); 
    i = k; 
    } 
    for(int i: int2Array) { 
    int k = gen1.nextInt(10); 
    i = k; 
    } 
    for(char i: charArray) { 
     int b = gen1.nextInt(20); 
     switch (b) { 
     case 1: i = 'H'; break; 
     case 2: i = 'R'; break; 
     case 3: i = 'F'; break; 
     case 4: i = 'Y'; break; 
     case 5: i = 'U'; break; 
     case 6: i = 'Q'; break; 
     case 7: i = 'T'; break; 
     case 8: i = 'N'; break; 
     case 9: i = 'B'; break; 
     case 10: i = 'L'; break; 
     case 11: i = 'K'; break; 
     case 12: i = 'P'; break; 
     case 13: i = 'I'; break; 
     case 14: i = 'Z'; break; 
     case 15: i = 'X'; break; 
     case 16: i = 'V'; break; 
     case 17: i = 'C'; break; 
     case 18: i = 'E'; break; 
     case 19: i = 'M'; break; 
     } 
    } 
    System.out.print("Generated Code: "); 
    for(int i: intArray) { 
    System.out.print(i); 
    } 
    for(char i: charArray) { 
    System.out.print(i); 
    } 
    for(int i: int2Array) { 
    System.out.print(i); 
    } 
} 

    } 

Im 꽤 숙련 된 프로그래머가이 코드를 메서드와 물건에 사용했지만 코드가 작동하지 않아서 곧바로 기본 메서드에서 시도해 보았고 임의 코드를 생성하지 않았습니다. 그냥 기본값을 출력합니다! 무슨 일이 일어나고있는 건지 다 해봤 어! 이것은 말이되지 않습니다! , 당신은 단지 로컬 변수 ik를 할당하고왜이 코드가 임의의 코드를 생성하지 않습니까?

답변

2
for(int i: intArray) { 
    int k = gen1.nextInt(10); 
    i = k; 
} 

그게 아니 당신이 목록에 값을 추가하는 방법. 시도해보십시오 :

for(int i=0; i<intArray.size(); i++) { 
    int k = gen1.nextInt(10); 
    intArray.set(i,k); 
} 

동일한 실수를 범하는 코드의 다른 부분을 유사한 방식으로 조정해야합니다.

0

for 루프에서는 목록에 값을 지정하지 않으므로 해당 값이 변경되지 않습니다.

for(int i: intArray) { 
    int k = gen1.nextInt(10); 
    intArray.set(i, k); 
} 

아마도 당신이 찾고있는 것입니다.

3

이어 for(int i: intArray) (예)는 iintArray의 요소에 대한 별명 아니다; 그것은 단지 intArray의 각 요소로 설정된 변수 일뿐입니다. 그래서 :

for(int i: intArray) { 
    int k = gen1.nextInt(10); 
    i = k; 
    } 

이 동등하다 :

for(int index = 0; index < intArray.size(); ++index) 
    { 
     int i = intArray[index]; 
     int k = gen1.nextInt(10); 
     i = k; 
    } 

(즉, 그것은 동일한 intArray[index]i를 설정하지만 다음 완전히 다른 무언가로 설정).

for(int index = 0; index < intArray.size(); ++index) 
     intArray[index] = gen1.nextInt(10); 
+0

intArray 실제로 배열이 아닌, 그것은 ArrayList에 너무 intArray [인덱스] 실 거예요 작업입니다. – yurib

+1

@yurib : 맞아, 고마워. 나는 그것이 배열 인 것처럼 처음에 썼다, 그리고 나는 그것이 목록이었고, 필요한 변화의 절반 만 만들었다는 것을 깨달았다. 그러나, 상관 없습니다. OP는 "꽤 숙련 된 프로그래머"이기 때문에 그와 같은 세부 사항에 어려움이 없을 것입니다. – ruakh

+0

OP : P의 자신감을 보여주는 upvote – yurib

0

지능 루프를 교체 : 당신이 정말 필요한 것은 이것이다

for (int i = 0; i < int2Array.size(); i++) { 
    int2Array.set(i, gen1.nextInt(10)); 
} 
for (int i = 0; i < intArray.size(); i++) { 
    intArray.set(i, gen1.nextInt(10)); 
} 
관련 문제