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. value第一次迭代,值为3
  4. 添加3到数组中的所有元素(使它们全部为 3)
  5. 检查数组中的第一个元素是否是3--> 是,增加分数
  6. 下一次迭代,value现在的值2
  7. 添加 2到数组的所有元素(使所有元素5
  8. ...

你在这里看到你的缺陷了吗?

in 的值tmp会变得更高,然后永远不会true在您的if-statements 中评估。你想在你的内部 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只是一个动态增长的数组。它的行为就像一个数组,您可以通过使用get(index)- 方法(这是 using 的“等效” [index])从中获取单个项目。

您根本不需要复制您的内容。但是如果必须使用数组,可以使用-methodList将 a 转换为数组。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 回答