2012-01-24 132 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); 
    } 
} 

    } 

我是一個非常有經驗的程序員,所以我設計了一個代碼,這個代碼曾經是在方法和東西,但它不會工作,所以我試圖直接在主要方法,它不會生成一個隨機代碼它只是打印出默認值!發生了什麼我已經嘗試了一切!這沒有道理!不爲什麼這段代碼不會生成隨機碼?

回答

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

這就是你怎麼一個值添加到列表中,你只是分配k局部變量i。請嘗試:

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)i不是的intArray元素的別名;它只是一個設置爲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; 
    } 

(即,它設置i等於intArray[index],但隨後將其設置爲完全不同的東西)。你真正需要的是這樣的:

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

intArray實際上不是一個數組,它是一個ArrayList所以intArray [指數]不會工作。 – yurib

+1

@yurib:很對,謝謝。我最初寫的就像是一個數組,然後我意識到這是一個列表,只做了一半必要的改變。但是不要緊。 OP是「一位非常有經驗的程序員」,所以我相信他在這種細節上不會有任何困難。 – ruakh

+0

upvote表示對OP的信心:P – yurib

0

更換您的INT循環:

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)); 
}