在Java中如何将ArrayList元素存储到数组中?

在Java中如何将ArrayList元素存储到数组中?,java,Java,我是Java新手,不知道是否有人能帮我解决下面的逻辑问题。我试图做的是遍历一个列表并将每个列表元素存储到数组中。完成后,我想检查数组元素的正确答案。例如输入3,2,1,那么最终分数应该是3。这是代码 代码 import java.rmi.RemoteException; 导入java.util.ArrayList; 导入java.util.List; 公共类迭代平均{ 公共静态积分=0; 静态列表=新的ArrayList(); 静态int[]温度; 公共静态void main(字符串[]args

我是Java新手,不知道是否有人能帮我解决下面的逻辑问题。我试图做的是遍历一个列表并将每个列表元素存储到数组中。完成后,我想检查数组元素的正确答案。例如输入3,2,1,那么最终分数应该是3。这是代码

代码
import java.rmi.RemoteException;
导入java.util.ArrayList;
导入java.util.List;
公共类迭代平均{
公共静态积分=0;
静态列表=新的ArrayList();
静态int[]温度;
公共静态void main(字符串[]args)引发异常{
list.clear();
增加(3);
增加(2);
增加第(1)款;
getScore();
}
公共静态void getScore()引发RemoteException{
温度=新整数[3];
for(整数值:列表){
对于(int i=0;i

非常感谢

当对算法有疑问时:头脑一步一步通过

  • 调用
    getScore()
  • 新数组
    tmp
    ,所有元素初始化为
    0
  • 第一次迭代,
    value
    的值为
    3
  • 3
    添加到数组中的所有元素(使所有元素都成为3)
  • 检查数组中的第一个元素是否为
    3
    -->是否为,增加分数
  • 下一次迭代,
    value
    的值现在是
    2
  • 2
    添加到数组的所有元素中(使所有元素
    5
  • 你看到你的缺点了吗

    tmp
    中的值将增大,并且在
    if
    -语句中永远不会计算为
    true
    。是否要在内部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);
    }
    
    static List=new ArrayList();
    // ...
    增加(3);
    增加(2);
    增加第(1)款;
    getScore();
    公共静态void getScore()引发RemoteException{
    if(list.get(0)=3){
    分数++;
    }
    if(list.get(1)=2){
    分数++;
    }
    if(list.get(2)==1){
    分数++;
    }
    System.out.println(“总分:+分”);
    }
    
    列表
    只是一个动态增长的数组。它的行为就像一个数组,您可以使用
    get(index)
    -方法从中获取单个项(这与使用
    [index]
    “等效”)


    你根本不需要复制你的内容。但是,如果必须使用数组,则可以在对算法有疑问时使用。

    列表转换为数组:心智单步执行

  • 调用
    getScore()
  • 新数组
    tmp
    ,所有元素初始化为
    0
  • 第一次迭代,
    value
    的值为
    3
  • 3
    添加到数组中的所有元素(使所有元素都成为3)
  • 检查数组中的第一个元素是否为
    3
    -->是否为,增加分数
  • 下一次迭代,
    value
    的值现在是
    2
  • 2
    添加到数组的所有元素中(使所有元素
    5
  • 你看到你的缺点了吗

    tmp
    中的值将增大,并且在
    if
    -语句中永远不会计算为
    true
    。是否要在内部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);
    }
    
    static List=new ArrayList();
    // ...
    增加(3);
    增加(2);
    增加第(1)款;
    getScore();
    公共静态void getScore()引发RemoteException{
    if(list.get(0)=3){
    分数++;
    }
    if(list.get(1)=2){
    分数++;
    }
    if(list.get(2)==1){
    分数++;
    }
    System.out.println(“总分:+分”);
    }
    
    列表
    只是一个动态增长的数组。它的行为就像一个数组,您可以使用
    get(index)
    -方法从中获取单个项(这与使用
    [index]
    “等效”)

    你根本不需要复制你的内容。但是如果必须使用数组,可以使用。

    包farzi将
    列表
    转换为数组; 导入java.util.ArrayList; 公共类数组列表数组 { 公共静态void main(字符串参数[]) { ArrayList arrList=新的ArrayList(); 添加(“hussi1”); 添加(“hussi2”); 添加(“hussi3”); String[]strArray=新字符串[arrList.size()]; arrList.toArray(strArray); 对于(int i=0;i
    package farzi;
    导入java.util.ArrayList;
    公共类数组列表数组
    {
    公共静态void main(字符串参数[])
    {
    ArrayList arrList=新的ArrayList();
    添加(“hussi1”);
    添加(“hussi2”);
    添加(“hussi3”);
    String[]strArray=新字符串[arrList.size()];
    arrList.toArray(strArray);
    
    对于(inti=0;i我只需将正确答案放入一个数组中,并在进行比较时进行比较。无需将内容转换为数组等等

    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;
    }
    
    intgetscore(列出答案){
    整数[]correctanks={3,2,1};
    智力得分=0;
    对于(int i=0;i<3;i++)
    if(correnctAnswers[i].equals(answers.get(i)))
    分数++;
    返回分数;
    }
    
    我只是把正确的答案放在一个数组中,一边比较,不需要把东西转换成数组之类的东西

    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;
    }
    
    intgetscore(列出答案){
    整数[]正确答案