我有一个这样的数组: 一个包含这样的键: 现在我可以这样写: 如果你不能说,我需要产生一系列在数组键中定义的某些位置被剥离的人。 我知道必须有一个漂亮而有效的方法来做到这一点,但我当然想不到它。 (阵列管理不是我的强项)。 你知道更好的方法吗? (如果我得到多 ...
提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供 中文繁体 英文版本 中英对照 版本,有任何建议请联系yoyou2525@163.com。
几乎完成了强力球游戏的制作,但存在语义错误。 尝试比较两个 5 个整数的数组并返回匹配数。 但是,如果存在重复号码,则该号码会多次匹配。 我需要在匹配后删除两个数字。
我尝试按照此处的建议使用 arraylist,但 arraylist 是“未使用的导入语句”,而 .remove 是“无法解析方法”
import java.util.ArrayList;
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
if (balls[i] == yballs[j]) {
match++;
balls.remove();
remove(yballs, yballs[j]);
}
}
}
public static int[] remove(int[] symbols, int c) {
for (int i = 0; i < symbols.length; i++) {
if (symbols[i] == c) {
int[] copy = new int[symbols.length-1];
System.arraycopy(symbols, 0, copy, 0, i);
System.arraycopy(symbols, i+1, copy, i, symbols.length-i-1);
return copy;
}
}
return symbols;
}
作为使用ArrayList
的解决方案
您可以填充 2 个 ArrayLists 来表示两个球集合和一个保存比赛的球:
List<Integer> balls = new ArrayList<Integer>();
List<Integer> yballs = new ArrayList<Integer>();
List<Integer> matches = new ArrayList<Integer>();
balls.add(<ball number>);
...
yballs.add(<ball number>);
...
然后你会通过每个 ArrayList 作为:
for (Integer ballNumber : balls) {
for (Integer yballNumber : yballs) {
if (ballNumber == yballNumber) {
matches.add(ballNumber);
}
}
}
并从两个List
删除所有重复项:
balls.removeAll(matches);
yballs.removeAll(matches);
如果您不想删除所有这些而只想删除其中一个重复项,您可以执行以下操作:
for (Integer match : matches) {
balls.remove(match);
yballs.remove(match);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.