[编辑]这个网站的新手是如此编辑以试图澄清问题。
我正在开发一个项目,其中我有一个方法,其中一个参数是一个数组。
示例:
public class Match
public void playMatch(int teamA, int teamB, ArrayList<String> groups)
Random scoreA = new Random();
int score1 = scoreA.nextInt(5) + 0;
int score2 = scoreA.nextInt(5) + 0;
System.out.println("Qtr 1: " + score1 + " " + score2);
if (score1 > score2){
System.out.println(groups.get(teamA) + " win " + score1 + " to +
score2 + " " + teams.get(teamB) + " eliminated.");
teams.remove(teamB);
}
else if (score2 > score1){
System.out.println(groups.get(teamB) + " win " + score2 + " to " +
score11 + " " + teams.get(teamA) + " eliminated.");
teams.remove(teamA);}
}
public static void main(String[] args) {
Match game1 = new Match();
ArrayList<String> groups = new ArrayList<String>(
Arrays.asList("team1", "team2", "team3"));
System.out.println("Round 1");
game1.playMatch(0, 1, groups);
问题是,当我在Matches方法中删除元素时,它不会从我的main方法中的ArrayList中删除它。这是一个问题,因为我希望能够这样做:
game2.playMatch(0, 1, groups)
其中1 = team3而非2队。
我怎样才能这样做,当我在Matches方法中从数组中删除一个元素时,它实际上会在我的main方法中从数组中删除该元素?这甚至可能吗?如果有可能的话,我希望有一些适合我的代码的东西,如果我不需要,我不想要实施另一种方法,因为实际上有更多的东西,但这给了我希望发生的事情的主旨。
答案 0 :(得分:0)
在下面的示例中,您将向removeByIndex方法传递三个参数:a(给定索引),b(另一个给定索引)和arrayList(元素的容器)。然后,它将创建容器的副本(克隆),在a和b中找到最低索引,从arrayList中删除该索引处的元素并返回修改后的副本。
public static ArrayList<String> removeByIndex(int a, int b, ArrayList<String> arrayList) {
ArrayList<String> clone = (ArrayList<String>) arrayList.clone();
int minIndex = Math.min(a, b);
clone.remove(minIndex);
return clone;
}
public static void main(String[] args) {
ArrayList<String> example = new ArrayList<String>();
example.add("One");
example.add("Two");
example.add("Three");
example.add("Four");
example.add("Five");
System.out.println(example);
example = removeByIndex(1, 3, example);
System.out.println(example);
}
请注意,您必须将方法的返回值分配给容器,否则不会对其进行修改。
答案 1 :(得分:0)
我重构了你给的东西以及下面的作品在我的结尾,并且好像做了你要问的。修复了一堆语法错误和格式化问题。看起来你并没有考虑score1 == score2的关系。请尝试以下代码,记下我在修改前后添加到主方法的列表的打印输出,看看是否有帮助
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Random;
public class MyMatch {
public void playMatch(int teamA, int teamB, List<String> groups) {
Random rand = new Random();
int score1 = rand.nextInt(5) + 0;
int score2 = rand.nextInt(5) + 0;
System.out.println("Qtr 1: " + score1 + " " + score2);
if (score1 > score2){
System.out.println(groups.get(teamA) + " win " + score1 + " to " +
score2 + " " + groups.get(teamB) + " eliminated.");
groups.remove(teamB);
} else if (score2 > score1){
System.out.println(groups.get(teamB) + " win " + score2 + " to " +
score1 + " " + groups.get(teamA) + " eliminated.");
groups.remove(teamA);
} else if (score1 == score2) {
System.out.println(groups.get(teamA) + " tie " + score1 + " to " +
groups.get(teamB) + " " + score2 + " no team was eliminated.");
}
}
public static void main(String[] args) {
MyMatch game1 = new MyMatch();
List<String> groups = new ArrayList<String>(Arrays.asList("team1","team2", "team3"));
System.out.println("Round 1");
System.out.println("BEFORE: " + groups);
game1.playMatch(0, 1, groups);
System.out.println("AFTER: " + groups);
}
}