我有两个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");
}
}
}
答案 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");
}
}