如何从两个列表中达到最大数量

时间:2015-09-18 19:12:48

标签: java

我有两个arraylists,我存储随机数..然后我计算第一个列表(player1)和第二个列表(player2)的最大数量... 我无法达到player1和player2的最大数量的问题,正如您所看到的,代码将int max1 = Integer.MIN_VALUE;int max2 = Integer.MIN_VALUE;进行比较..因此输出始终为tie 在我的代码中,我确实计算了player1和player2的最大数量,但我无法达到它们。 如何达到最大数量player1以将其与来自player2的最大数量进行比较?

import java.util.ArrayList;
import java.util.Random;


public class Main {

    int static maximum(ArrayList A){
        int max=0;
        for(int s=0; s<A.size(); s++){
            if(A.get(s)>max){
                max=A.get(s);
            }
        }
        return max;
    }


    public static void main(String[] args) {

        ArrayList<Integer> player1 = new ArrayList<Integer>();
        ArrayList<Integer> player2 = new ArrayList<Integer>();

        int max1=maximum(player1);
        int max2=maximum(player2);
        Random rn = new Random();

        for (int i=0; i<=5; i++){
        int value1 = rn.nextInt(13)+1;
        player1.add(value1);
        } 
        System.out.println(player1);

        for (int i=0; i<=5; i++){
        int value2 = rn.nextInt(13)+1;
        player2.add(value2);
        }
        System.out.println(player2);

        if(max1>max2){
            System.out.println("player1 is winner");

        } else if (max1<max2){
            System.out.println("player2 is winner");
        } else {
        System.out.println("tie");
                        }

                        }
}

3 个答案:

答案 0 :(得分:2)

可能你应该在这里检查玩家二,而不是玩家一。 这是你做的:

 int max2 = Integer.MIN_VALUE;
    for(int s=0; s<player1.size(); s++){
        if(player1.get(s)>max2){
            max2=player1.get(s);
        }
    }

正确的应该是:

 int max2 = Integer.MIN_VALUE;
    for(int s=0; s<player2.size(); s++){
        if(player2.get(s)>max2){
            max2=player2.get(s);
        }
    }
  

编辑:

你可以从你的main()调用:

max1 = maximum(player1);
max2 = maximum(player2);

int maximum(ArrayList A)
{
int max = 0;
    for(int s=0; s<A.size(); s++){
        if(A.get(s)>max){
            max=A.get(s);
        }
   } 
return max;
 }

然后只是比较你正在做的max1和max2。

  

编辑2:

import java.util.ArrayList;
import java.util.Random;


public class Main {

int static maximum(ArrayList A){
    int max=0;
    for(int s=0; s<A.size(); s++){
        if(A.get(s)>max){
            max=A.get(s);
        }
    }
    return max;
}


public static void main(String[] args) {

    ArrayList<Integer> player1 = new ArrayList<Integer>();
    ArrayList<Integer> player2 = new ArrayList<Integer>();


    Random rn = new Random();

    for (int i=0; i<=5; i++){
    int value1 = rn.nextInt(13)+1;
    player1.add(value1);
    } 
    System.out.println(player1);

    for (int i=0; i<=5; i++){
    int value2 = rn.nextInt(13)+1;
    player2.add(value2);
    }
    System.out.println(player2);
    int max1=maximum(player1);
    int max2=maximum(player2);

    if(max1>max2){
        System.out.println("player1 is winner");

    } else if (max1<max2){
        System.out.println("player2 is winner");
    } else {
    System.out.println("tie");
                    }

                    }
     }

答案 1 :(得分:1)

你的第二个for循环中有一个复制和粘贴错误。

int max2 = Integer.MIN_VALUE;
    for(int s=0; s<player1.size(); s++){
        if(player1.get(s)>max2){
            max2=player1.get(s);
        }
    }

应该是player2。但是因为你再次迭代player1,max1和max2都是相同的值。

答案 2 :(得分:0)

写得少!,有很多Java功能,但是我们不知道因为我们推动我们自己写的内容(有时甚至是无效的代码)。

public static void main(String[] args) throws CloneNotSupportedException {
        //You fill it with random numbers
        Integer player1A[] = {1,2,3,4, 10};
        Integer player2A[] = {5,6,3,10};

        List<Integer> player1 = Arrays.asList(player1A);
        List<Integer> player2 = Arrays.asList(player2A);

        Integer maxPlayer1 = Collections.max(player1);
        Integer maxPlayer2 = Collections.max(player2);

        System.out.println("Max Player 1 = " + maxPlayer1);
        System.out.println("Max Player 2 = " + maxPlayer2);

        if(maxPlayer1 > maxPlayer2) {
            System.out.println("Win player 1");
        } else if(maxPlayer2 > maxPlayer1) {            
            System.out.println("Win player 2");
        } else {
            System.out.println("Draw");
        }
    }