我是java的初学者。为了我的任务,我得到了这样一张table。表中有6名选手参加了7场比赛。每个单元格中的值是他们在特定比赛中获得的位置:
我的程序的任务是打印出在至少一场比赛中获得第一名的跑步者的数量。我成功地写了一个代码来计算所有跑步者获得的第一名的数量,但是我正在努力找到一个解决方案,如何将那些多次获得第一名的跑步者添加到只计算一次的数量中。找到匹配值并将其添加到计数后,如何迭代到下一行?以下是我目前的代码:
public class MyClass {
public static void main(String[] args) {
int A[][] = {{21, 14, 1, 21, 19, 5, 2},
{4, 27, 1, 7, 25, 19, 19},
{12, 20, 25, 11, 30, 14, 15},
{5, 8, 5, 7, 1, 2, 13},
{20, 2, 14, 4, 25, 1, 1},
{14, 20, 20, 15, 11, 18, 16}};
int i, j;
int counter = 0;
System.out.println("result:");
for (i = 0; i < 6; i++) {
for (j = 0; j < 7; j++) {
if (A[i][j] == 1) {
counter++;
}
}
}
System.out.print(counter);
}
}
3条答案
按热度按时间vxbzzdmp1#
您可以在
range
矩阵的行索引,以及filter
把那些包含anyMatch
的1
:yuvru6vn2#
要跟踪在比赛中已经获得第一名的跑步者,可以使用如下布尔数组
上述布尔数组的第i个位置存储以下信息:
如果第i名选手在任何一场比赛中获得第一名。
错误-如果第i名选手无法在任何比赛中获得第一名。
因此,现在在您的代码中,您只能在当前运行程序尚未获得第一名时递增计数器。您的代码如下所示:
注意:作为对我们算法的改进,您可以
break
因为只能有一个第一名优胜者,所以在代码中的下一行后面的语句:所以基本上,你是说,如果我们已经找到了一个给定比赛的第一名,那么就不要检查其他选手。
r1wp621o3#
在if语句中添加中断符。