Java For Loop Practice

时间:2015-09-06 11:23:31

标签: java for-loop

正在做一些Java实践,我遇到了这个特殊的问题,我得到了以下代码:

public class DistanceSeparator {

    public static void main(String[] args) {
        printSeparatorSequence(3);
        printSeparatorSequence(5);
        printSeparatorSequence(8);
    }

    public static void printSeparatorSequence(int numberOfElements) {
        for () {

        }
        System.out.println();
    } //end of method printSeparatorSequence

} // end of class

我应该使用 A SINGLE FOR LOOP 修改代码以显示:

如果numberOfElements = 5

1 3 7 13 21

如果numberOfElements = 7

1 3 7 13 21 31 43

每个都显示+ 2,+ 4,+ 6,+ 8,+ 10和+12的增量 最终的结果是:

1 3 7
1 3 7 13 21
1 3 7 13 21 31 43 57

我似乎无法理解如何获得这个结果,这是经过2小时的尝试(是的,我很糟糕)。有什么帮助吗?

编辑这就是我所拥有的,在决定寻求帮助之前,它显然不起作用。

 int j = 0;
 for (int i = 1; i <= numberOfElements; i++) {          
     j = i * 2; // + by how much
     int z = i + j; //sum            
     System.out.print(z + "");
 } 

编辑2 现在我明白了,哦,我的,认为我是如此接近。猜猜我被困了一段时间后太乱了。万分感谢!

5 个答案:

答案 0 :(得分:0)

以下是完成预期结果的代码。

int current = 1;    

for(int i = 0; i < numberOfElements; i++) {

   current += i*2;
   System.out.print(current + " ");
}

答案 1 :(得分:0)

在您的情况下,每次调用循环时都会重新生成int z, 您所要做的就是在循环外定义z并将z实例化为1,同时,您不会保留z的先前值,这就是它无法正常工作的原因。因此它应该是z = z + j并将此行放在print语句下方,您就完成了。

以下是一段代码,可以帮助您以我的方式

int j = 1;
for(int i=1; i<=numberOfElements; i++) {
    System.out.println(j);
    j = j + 2*i;
}

而且,这里有一段代码可以帮助你以你的方式

int j = 0;
int z = 1;
for (int i = 1; i <= numberOfElements; i++)
    {          
    j = i * 2; // + by how much
    System.out.print(z + " ");
    z = z + j; //sum            

    } 

答案 2 :(得分:0)

你只需要保留另一个变量来跟踪差异(变化),然后通过迭代2的幂来不断更新它,即对于第一个循环只增加2 ^ 1,然后通过2 ^ 2,然后2 ^ 3等等。

如何实现这一目标的一个例子:

for (int i = 0, diff = 0; i < numberOfElements; i++, diff += 2*i) {
    System.out.print((1 + diff) + " ");
}

更新:使用您的代码段编辑问题后,您可以看到问题出在此行:

int z = i + j; //sum 

由于每次迭代都会ij前进,因此会丢失偏移量(您不断重置它)。你需要保持静态(比如在我的例子中:1),并且每次迭代只更新j,否则你的计算“基数”会不断变化而且公式不再存在

答案 3 :(得分:0)

注意趋势。

您要为前一个数字添加2的倍数以获取下一个数字。要添加的2的倍数取决于数字的位置。例如,要获取第一个号码,请将2 x 0添加到1。要获得第二个数字,请将2 x 1添加到上一个数字(即3)。要获得第3个数字,请将2 x 2添加到上一个数字(即7)。要获得第4个数字,请将2 x 3添加到上一个数字(给出13)。

要获取第n个位置的号码,请将2 x (n-1)添加到上一个号码。

现在看一下下面的例子,记住上面的解释。

public static void printSeparatorSequence(int numberOfElements)  {
int number = 1;
for (int i = 0; i<numberOfElements;i++) {
  number = number + 2 * i;
  System.out.print(number);
}

System.out.println();

} //end of method printSeparatorSequence
} // end of class

答案 4 :(得分:0)

这是您的问题的解决方案。我已经通过代码中给出的注释行讨论了代码。

public class DistanceSeparator 
{
    /* Main Method */
    public static void main(String[] args) 
    {
        /* printSeparatorSequence Function is Called */
        printSeparatorSequence(3);
        printSeparatorSequence(5);
        printSeparatorSequence(8);
    }

    /* printSeparatorSequence Function Definition */
    public static void printSeparatorSequence(int NumberOfElements)
    {
        /* variable j is used to get the multiples of 
         2 by multiplying with variable i within the for loop 
         and variable sum is used to get the total value */
        int j=2,sum=1;
        for(int i=0;i<NumberOfElements;i++)
        {
            sum=sum+(j*i);
            /* Here total sum is printed with a space */
            System.out.print(sum+" ");
        }
        /* It is used for new line */
        System.out.println();
    }
}