0
int x = 0;
String[] QEquivalent = {};

String s = sc.nextLine();
String[] question2 = s.split(" ");

for (int i = 0; i < question2.length; i++) {
    System.out.println(question2[i]);
    x++;
}                                                                   //debug
System.out.println(x);

String s2 = sc2.nextLine();
String[] Answer = s2.split(" ");

for (int c = 0; c < Answer.length; c++) {
    System.out.println(Answer[c]);
}                                                                   //debug
int y;

String u = sn.nextLine();
String[] t = u.split(" ");
for (y = 0; y < question2.length; y++) {
    for (int w = 0; w < t.length; w++) {
        if (t[w].equals(question2[y])) {
            QEquivalent[y] = "ADJ";
            System.out.println(QEquivalent[y]);
            break;
        }
    }
}

これは私が今持っているコードの行です。question2 の文字列が String[] t で見つかった場合、文字列 "ADJ" を String[] QEquivalent に格納する必要があります。エラーを修正できないようです。誰かが私を助けてくれますか?

4

7 に答える 7

3

ここで空の配列を作成しています:

String[] QEquivalent = {};

したがって、アクセスしようとするインデックスはすべて範囲外になります。固定サイズを使用して配列を作成する必要があります。

または、ArrayList動的にサイズを大きくできる を代わりに使用することをお勧めします。

List<String> qEquivalent = new ArrayList<String>();

次に、次を使用して要素を追加します。

qEquivalent.add("ADJ");

また、Java 命名規則に従ってください。変数名は小文字で始める必要があります。

于 2013-07-31T15:17:40.593 に答える
1

あなたの配列QEquivalentは空の配列です。長さ0があるので、QEquivalent[0]投げても大丈夫ArrayIndexOutOfBoundsExceptionです。

私が見ることができる1つの修正は、長さを割り当てることです:

String[] question2 = s.split(" ");
// Just assign the dimension till which you will iterate finally
// from your code `y < question2.length` it seems it should be question2.length
// Note you are always indexing the array using the outer loop counter  y 
// So even if there are n number of nested loops , assigning the question2.length
// as dimension will work fine , unless there is something subtle you missed 
// in your code
String[] QEquivalent = new String[question2.length];

Listのような の実装を使用することをお勧めしますArrayList

List<String> qEquivalent = new ArrayList<String>();
......
if (t[w].equals(question2[y])) {
       qEquivalent.add("ADJ");
       System.out.println(qEquivalent.get(y));
       break;
}
于 2013-07-31T15:18:07.027 に答える
0

配列にある程度のサイズを与えるString[] QEquivalent = new String[100];

You ステートメントString[] QEquivalent = {};は、サイズがゼロの配列を作成します。

于 2013-07-31T15:18:50.197 に答える