1

この基本的なプログラムについて助けが必要です。私の友人は、このコードのほとんどを教えてくれましたが、インポート ステートメントは教えてくれませんでした。それが言うところの終わりに向かってlist.add(finalCombined.get(counter3));、それは私にエラーを与えます。私が得るエラーは

Cannot find Symbol 
Symbol: variable list
location: class ArrayUtils

私はこれに非常に混乱しています。必要と思われる import ステートメントを追加しました。ありがとうございました

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

4 に答える 4

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

という名前の変数を宣言していないlistため、この行はコンパイルに合格できません。

おそらくあなたが意味した

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

メソッドには、まったく使用していないrandomStringsという引数があるためです。arrayList

于 2015-04-15T12:05:34.280 に答える
0

という変数が定義されていませんlist。ただしfinalCombined、同じ名前の配列リストを 2 回宣言しています。1 つの変数名を のように変更する必要がありますlist。また、以下のようにメソッド経由でmainメソッドを呼び出す必要があります。

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

arrayListmethodの parameter の目的が何であるかをさまよっていますrandomStrings。メソッド内でこのリストを使用することはありませんrandomStrings

出力は次のようになります。

[aeo]
[aeo, yii]
[aeo, yii, isu]
[aeo, yii, isu, aea]
[aeo, yii, isu, aea, aaa]
[aeo, yii, isu, aea, aaa, iek]
于 2015-04-15T12:23:13.243 に答える
0

常に適切かつ賢明に変数を宣言すると、コードがより読みやすく理解しやすくなります。これは、実際にコンパイラのストレスを軽減していることを意味します;)

ちょっとした提案 : コーディング中に IDE を使用すると、このようなコンパイル時のエラーに役立ちます。さらに、彼らはソリューションの提案やコードの最適化にもとてもフレンドリーです..!

于 2016-11-16T16:14:48.053 に答える
0

インラインに変更listする必要があると思いますarrayList

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

listコードのどこにも宣言されておらず、使用されていないためarrayListです。

于 2015-04-15T12:08:40.477 に答える