基本的java程序找不到符号错误

时间:2015-04-15 12:04:14

标签: java arraylist cannot-find-symbol

我需要这个基本程序的帮助。我的朋友给了我大部分代码而不是import语句。它接近list.add(finalCombined.get(counter3));的结尾,它给了我一个错误。我得到的错误是

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
}

4 个答案:

答案 0 :(得分:2)

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

您尚未声明任何名为list的变量,因此此行无法通过编译。

也许你的意思是

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

因为您的randomStrings方法有一个名为arrayList的参数,您根本就没有使用它。

答案 1 :(得分:0)

我认为您需要在行中将list更改为arrayList

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

因为list未在代码中的任何位置声明,并且arrayList尚未使用。

答案 2 :(得分: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]

答案 3 :(得分:0)

始终正确且明智地声明变量,这有助于您的代码更易读和易懂。这意味着你实际上减轻了编译器的压力;)

一个小建议:在编码时使用IDE可以帮助您编译这样的编译时错误。此外,他们非常友好地建议解决方案和优化代码..!