0

私はJavaを初めて使用し、以下のロジックを誰かが手伝ってくれるかどうか疑問に思っていました。やろうとしているのは、リストを繰り返し処理し、各リスト要素を配列に格納することです。それが終わったら、配列要素で正解を確認したいと思います。たとえば、3,2,1と入力すると、最終スコアは3になります。コードは次のとおりです。

コード

import java.rmi.RemoteException;
import java.util.ArrayList;
import java.util.List;

public class IterateOverArray {

public static int SCORE = 0;
static List<Integer> list = new ArrayList<Integer>();
static int[] temp;
public static void main(String[] args) throws Exception {

    list.clear();
    list.add(3);
    list.add(2);
    list.add(1);
    getScore();
}

public static void getScore() throws RemoteException {

    temp = new int[3];

    for (Integer value : list) {
        for (int i = 0; i < temp.length; i++) {
            temp[i] += value.intValue();
        }
        if (temp[0] == 3) {
            SCORE++;
        }
        if (temp[1] == 2) {
            SCORE++;
        }
        if (temp[2] == 1) {
            SCORE++;
        }
    }
    System.out.println("total score: " + SCORE); // Final Score should be 3!
}
}

どうもありがとう!

4

3 に答える 3

2

アルゴリズムに疑問がある場合:メンタルステップスルー!

  1. 電話getScore()
  2. 新しい配列tmp、すべての要素がに初期化されます0
  3. 最初の反復、の値value3
  4. 3配列内のすべての要素に追加します(すべてを3にします)
  5. 配列の最初の要素が3->であるかどうかを確認し、スコアを上げます
  6. 次の反復では、の値valueは現在2
  7. 2配列のすべての要素に追加します(すべての要素を作成します5
  8. ..。

ここにあなたの欠陥が見えますか?

の値はtmp高くなり、ステートメントで評価されることはありませtrueif。内側のforループの=代わりに使用しますか?+=


サンプルの実装は次のとおりです。

static List<Integer> list = new ArrayList<Integer>();
// ...
list.add(3);
list.add(2);
list.add(1);
getScore();

public static void getScore() throws RemoteException {
    if (list.get(0) == 3) {
        SCORE++;
    }
    if (list.get(1) == 2) {
        SCORE++;
    }
    if (list.get(2) == 1) {
        SCORE++;
    }
    System.out.println("total score: " + SCORE);
}

AList動的に成長する配列です。配列と同じように動作し、-methodを使用して単一のアイテムを取得できますget(index)(これは、usingと「同等」[index]です)。

内容をコピーする必要はまったくありません。ただし、配列を使用する必要がある場合は、 -methodListを使用してを配列に変換できます。List.toArray()

于 2013-03-05T23:18:42.950 に答える
1

正解を配列に入れて、比較していきます。物事を配列などに変換する必要はありません。

int getScore(List<Integer> answers) {
    Integer[] correctAnswers = {3,2,1};
    int score = 0;
    for (int i = 0; i < 3; i++) 
        if (correnctAnswers[i].equals(answers.get(i)))
            score++;
    return score;
}
于 2013-03-05T23:35:57.273 に答える
0
package farzi;

import java.util.ArrayList;

public class ArrayListToArray 
{
    public static void main (String args[])
    {
        ArrayList<String> arrList = new ArrayList<String>();
        arrList.add("hussi1");
        arrList.add("hussi2");
        arrList.add("hussi3");
        String[] strArray = new String[arrList.size()];
        arrList.toArray(strArray);
        for(int i=0;i<strArray.length;i++)
        {
            System.out.println(strArray[i]);
        }
    }

}
于 2013-03-05T23:22:57.330 に答える