繁体   English   中英

无法理解如何循环循环

[英]unable to understand how to loop in loop

我正在编写一个java代码来循环数据,在其中有另一个循环。 以下是我的代码。

String names[] = { "user1", "User2", "User3", "User4", "User5" };
for (int i = 0; i < 10; i++) {
    for (int j = 0; j < names.length; j++) {
        System.out.println(i + " " + names[j]);
    }
}

THRE输出我得到的是如下,即每个i的用户名越来越打印出来,但我希望他们能在一系列的如果要打印i值。 请参阅预期的输出以便更好地理解。

当前输出:

0 user1
0 User2
0 User3
0 User4
0 User5
1 user1
1 User2
1 User3
1 User4
1 User5
2 user1
2 User2
2 User3
2 User4
2 User5
3 user1
3 User2
3 User3
3 User4
3 User5
4 user1
4 User2
4 User3
4 User4
4 User5
5 user1
5 User2
5 User3
5 User4
5 User5
6 user1
6 User2
6 User3
6 User4
6 User5
7 user1
7 User2
7 User3
7 User4
7 User5
8 user1
8 User2
8 User3
8 User4
8 User5
9 user1
9 User2
9 User3
9 User4
9 User5

预期产量:

0 user1
1 User2
2 User3
3 User4
4 User5
5 user1
6 User2
7 User3
8 User4
9 User5

请让我知道如何实现这一目标。

您可以使用单个for循环执行此操作:

for (int i = 0; i < 10 * names.length; i++) {
    System.out.println(i + " " + names[i % names.length]);
}

使用此语句i % names.length您将使用数组作为环缓冲区。 因此,当你增加i超出数组的长度时,模数的结果将为0并且它将从那里继续。 这似乎是你想要的。

这将打印50行,最多49 User5 例如,如果您想要10行,只需将此限制作为for循环中的终止条件。

for (int i = 0; i < 10; i++)

这是了解mod运算符%的好机会:

for (int i = 0; j < 10 ; i++) {
    System.out.println(i + " " + names[i % names.length]);
}

运算符通过右操作数, names.length ,即5,产生左操作数除法的剩余部分(在本例中,它是i )。当i从0增加到10时,除以5的剩余部分继续如下:

0 1 2 3 4 0 1 2 3 4

这是将索引循环回数组开头而不为其创建单独计数器的常用方法。

使用Java 8

    String names[] = { "user1", "User2", "User3", "User4", "User5" };
    IntStream.range(0, 10).forEach( i -> System.out.println(i + " " + names[i % names.length]));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM