繁体   English   中英

如何不断地循环遍历代码直到满足条件?

[英]How to constantly re-loop through code until a condition is met?

我知道你能做

  while(function){


 } 

等,但几乎我想发生的是:

我有6个人:Ceri Harry Matthew James James Lewis Kwok

我想制作一种夹具程序,所以它就像

 ceri v harry
ceri v matthew
ceri v james
ceri v kwok

并为每个人做到这一点(但是,如果发生ceri v harry,那么harry v ceri不会出现)。

我想要一些指导,以确定数组最适合还是...?

作为我自己的小项目,我并不需要任何代码或有人为我做这件事,只是指导。

编辑:如果您只是在寻找提示,卢克的答案会更好; 如果您仍然需要帮助,请阅读此文章的其余部分:)


没有任何代码很难解释,但是根据您的要求,我会尝试的。 假设您在数组中拥有所有名称,即names

for循环中循环遍历每个名​​称。 在该循环内,还循环遍历其余名称-例如,如果您的外循环从索引0开始,则将内循环从索引1开始。对于内循环的每次迭代,您将拥有名称的唯一组合。


现在,如果仍然令人困惑,那么下面的一些代码可以帮助您入门:

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

如果我理解正确,那么您正在寻找提示,但您想自己弄清楚。 您说对了,最简单的人是对的。

这里有一个更详细的提示(如果您不想要更多,请不要阅读!)您想遍历数组,并为每个人将他与数组中所有他头上的人配对。 最后,在“ for”循环内需要一个“ for”循环。

由于没有代码,因此可以有一个数组:

String names[] = new String [] {"ceri", "harry", "matthew", ...};

然后在中进行比较:

for(int i = 0; i < names.length; i++) {
    for(int j = i + 1; j < names.length; j++) {
        System.out.println(names[i] + " v " + names[j]);
    }
}
String[] names = new String[] {"ceri", "harry", "matthew", ...};

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

通过循环遍历每个元素并仅打印其后的名称为“ v”,可以消除重复的组合。

正如其他人所说,您将要使用两个嵌套的for循环和两个嵌套的if语句。 这将允许您获取一个名称,遍历所有其他名称,同时检查结果是否以任一顺序出现在您的结果集中。

可能值得注意的是,您只需要遍历列表中一半以上的名称,即可获得所有对,且不包含任何双打。 您可能还想查看一个动态对象(例如和arraylist),以存储结果集,以防输入名称列表的大小不断增加。

暂无
暂无

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

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