2015-04-15 2 views
1

Мне нужна помощь с этой базовой программой. Мой друг дал мне большую часть этого кода, но не заявления импорта. К концу, где он говорит list.add(finalCombined.get(counter3));, это дает мне ошибку. Ошибка, которую я получаю:Базовая программа java не может найти ошибку символа

Cannot find Symbol 
Symbol: variable list 
location: class ArrayUtils 

Я очень смущен этим. Я добавил, какие импортные заявления мне нужны. Спасибо

import java.util.ArrayList; 
import java.util.Random; 
import java.util.Collections; 
import java.lang.String; 

public class ArrayUtils { 
    public void randomStrings(ArrayList<String> arrayList,int nbrOfStrings,int vowelCnt, int strSize){ 
     ArrayList <String> finalCombined = new ArrayList(); 
     ArrayList <String> finalCombined = new ArrayList(); 
     for (int cnt = 0; cnt < nbrOfStrings; cnt++) 
     { 
      int cnt2 = 0; 
      int gn, size, vowelUsed; 
      Random n1 = new Random(); 
      size = 122-96; 
      //char cs[] = new char[strSize]; 
      //String cs; 
      //cs = ""; 
      ArrayList <Character> cs = new ArrayList(); 
      int counter = 0; 
      vowelUsed = 0; 

      while (counter < 1) 
      { 
       vowelUsed = n1.nextInt(vowelCnt + 1); 
       if (vowelUsed == 0) 
       { 
       } 
       else 
       { 
        counter = 2; 
       } 

      } 

      while (cnt2 < (strSize - vowelUsed)) 
      { 
       gn = n1.nextInt(size) + 97; 

       if (gn == 97 | gn == 101 | gn == 105 | gn == 111 | gn == 117 | gn == 121) 
       { 
       } 

       else 
       { 
        cs.add((char)gn); 
        //cs += ((char)gn + ""); 
        cnt2 ++; 
       } 
      } 
      while (cnt2 < strSize) 
      { 
       gn = n1.nextInt(size) + 97; 
       if (gn == 97 | gn == 101 | gn == 105 | gn == 111 | gn == 117 | gn == 121) 
       { 
        cs.add((char)gn); 
        //cs += ((char)gn + ""); 
        cnt2 ++; 
       } 
      } 
      //int check; 
      //check = list.add(cs[cnt]); 
      Collections.shuffle(cs); 

      String combined; 
      combined = ""; 
      //System.out.println(cs); 

      int counter2 = 0; 
      while (counter2 < strSize) 
      { 
       combined += cs.get(counter2); 
       counter2 ++; 
      } 
      finalCombined.add(combined); 
      counter2 = 0; 
      combined = ""; 

     } // end # strings  

     for (int counter3 = 0; counter3 < nbrOfStrings; counter3++) 
     { 
      list.add(finalCombined.get(counter3)); 
     } 

    } // end method 
} 
+0

Полезно использовать '||' вместо '' ', когда вы пишете что-то вроде' if (gn == 97 | gn == 101 | gn == ... '. –

ответ

2
list.add(finalCombined.get(counter3)); 

Вы не объявили любую переменную с именем list, так что эта линия не может пройти компиляцию.

Возможно, вы имели в виду

arrayList.add(finalCombined.get(counter3)); 

, поскольку ваш метод randomStrings имеет аргумент называется arrayList, что вы не используете вообще.

0

я думаю, что вам нужно изменить list к arrayList в строке

list.add(finalCombined.get(counter3)); 

потому list не объявлена ​​где-либо в вашем коде и arrayList не была использована.

0

Вы не определили переменную с именем list. Однако вы объявили список массивов finalCombined с тем же именем дважды. Одно имя переменной должно быть изменено как list. Также вам нужно позвонить методу с помощью метода main, как показано ниже.

new ArrayUtils().randomStrings(new ArrayList<String>(), 6, 3, 3); 

Я просто бродил, что цель параметра arrayList в методе randomStrings. Этот список не используется с помощью метода randomStrings.

Ваш результат выглядит следующим образом:

[aeo] 
[aeo, yii] 
[aeo, yii, isu] 
[aeo, yii, isu, aea] 
[aeo, yii, isu, aea, aaa] 
[aeo, yii, isu, aea, aaa, iek] 
0

Всегда объявляйте переменные правильно и мудро, который помогает ваш код более читаемым и понятным. Это означает, что вы фактически уменьшаете нагрузку на компилятор;)

Небольшое предложение: используйте IDE во время кодирования, которое может помочь вам в таких ошибках компиляции. Более того, они так дружелюбны в том, чтобы предлагать решения и оптимизировать код ...!