Почему этот код не генерирует случайный код? - PullRequest
0 голосов
/ 24 января 2012
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);
    }
}

  }

Я довольно опытный программист, поэтому я разработал код, в котором этот код использовался в методах и прочем, но он просто не работал, поэтому я попробовал его прямо в методе main, и он не генерирует случайный кодон просто распечатывает значения по умолчанию!Что происходит, я перепробовал все!Это не имеет никакого смысла!

Ответы [ 4 ]

3 голосов
/ 24 января 2012

In (например) 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);
2 голосов
/ 24 января 2012
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 голосов
/ 24 января 2012

Замените ваши циклы 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));
}
0 голосов
/ 24 января 2012

В ваших циклах for вы не назначаете значение в списки, поэтому их значения не изменяются.

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

, вероятно, то, что вы ищете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...