使用嵌套for循环

时间:2013-12-13 14:12:55

标签: java loops for-loop nested-loops

我的规格如下:

  

编写一个程序,打印出两个加起来为7的数字的所有排列。提示:你可以使用两个嵌套for循环。

我已经这样做但我知道这是不正确的。我应该输入什么数字?

public class NestedFor {

  public static void main(String[] args) {

    for(int i=1; i<=3; i++) {
      for(int j=1; j<=i; j++) {
            System.out.println(i+ "   " +j);
      }
    }
  }
}

8 个答案:

答案 0 :(得分:8)

试试这个(我假设你想要非负数,否则你有无限的可能性):

for(int i=0; i<=7, i++)
{
   System.out.println(i + "+" + (7-i));
}

不需要两个for循环。

如果不是非负数,则需要正数,这将成为:

for(int i=1; i<7, i++)
{
   System.out.println(i + "+" + (7-i));
}

答案 1 :(得分:2)

你快到了。以下是您需要考虑的事项:

  • 假设数字必须为正数,外部循环应该从16,包括13
  • 数字不需要整齐。因此,您不应该停止i的内循环,也不要停留16,包括
  • 在打印ifi之前,您需要先添加j支票。

一旦你解决了上述三件事,你的程序应该可行。祝你好运!

答案 2 :(得分:1)

你的循环应该在1和7之间循环。然后在最后一个for循环中你需要检查i和j的总和是否等于7.如果是,则打印这两个数字。

答案 3 :(得分:1)

你真的不需要嵌套循环。

for (ii = 0; ii<8; ii++) {
  System.out.printf("(%d, %d)\n",ii,7-ii);
}

保持简单。

我知道“提示”说你可以使用两个嵌套循环;但根据我的经验,不应忽视一点点聪明。当你的问题变得更大时,O(n)而不是O(N ^ 2)是一个巨大的差异......

答案 4 :(得分:1)

一些调整:我冒昧地发布解决方案,但请确保你理解它!

for (int i = 0; i <= 7/*Need to consider all numbers from 0 to 7*/ ; ++i) {
    for (int j = 0; j <= i /*Don't overoptimise: this is good enough and will not generate duplicates*/; j++) {
            if (i + j == 7){
                System.out.println(i+ "," +j);
            }
     }
}

这不是最快的方式;一旦你有了解决方案,就花一些时间进行优化。

答案 5 :(得分:1)

试试这个:

for(int i=0;i<7;i++){ //First Loop
    for(int j=7;j>0;j--){//Send loop
        if((i+j)==7) System.out.println(i+" , "+j); //Permutations printed to terminal
    }
}

我想这是自我解释,两个循环相互走向。运行它,看看可爱的结果;)

  

在数学中,置换的概念与置换(重新排列)对象或值的行为有关。

答案 6 :(得分:0)

检查它们是否合计为7

if (i+j == 7)
{
  //then they add to 7
}

如果你想要1到7之间的所有数字加起来为7,它们都应该介于1和7之间。如果你想要包含0,那么就从那里开始。

 for (int i=1; i<=7; i++)

...您可能想要排除重复

for(int i=1; i<=7; i++) {
  for(int j=i; j<=7; j++) { //starts at i, not 1
   /* Only check j against numbers equal to or lower than itself
   /* to avoid duplicates
    */
  }
}

<强>另外

根据惯例,类名应以国会大厦字母开头,并以驼峰形式开头(短语中的每个单词都有国会大厦字母

NestedFor 

答案 7 :(得分:0)

public class NestedFor {

  public static void main(String[] args) {
    for(int i=1; i<=7; i++) {
      for(int j=1; j<i; j++) {
        if (i + j == 7 ) {
          System.out.println(i+ "   " +j);
        }
      }
     }
   }
}