转换"而"循环到" for" "做什么"

时间:2018-06-12 12:30:24

标签: java loops for-loop while-loop do-while

希望转换以下代码,以便在"中添加整数值。循环到" for"和"做什么"。我设法让它与#34; for#34; "而"而#34;循环,但当我尝试将相同的循环转换为" do while"我得到了一些奇怪的数字

import java.util.Scanner;
public class CountLoop{
public static void main (String[] args){
    Scanner in = new Scanner (System.in);
    int i = -1;
    int limit = 0;
    System.out.println("Please enter a number");
    String end1 = in.nextLine();
    int end = Integer.parseInt(end1);



    /*while (i < end){
        i++;
        limit = (i + limit); 
        */


    //for (i = -1; i < end; limit = (i + limit)) i++;{ 

    do {
        limit = (i + limit);
        i++;

    } while ((i < end)); 
    System.out.println("The sum of the numbers in between 0 and " + end + " is i = " + limit);




    }
    //System.out.println("The sum of the numbers in between 0 and " + end + " is i = " + limit);
}

就像我说的那样,&#34;而#34; &#34; for&#34;循环工作正常,所以我评论他们专注于&#34;做什么&#34; loop,它给出了接近但输出不正确的值。例如,当我输入100时,预期的答案是5050,但无论出于什么原因我得到4949。我试图改变变量的初始值并做一些事情,比如添加&#34; end&#34;回到它,但这会使一切变得更糟。不知道我在这里做错了什么,但感谢任何帮助。

3 个答案:

答案 0 :(得分:0)

while循环在将i循环添加到结果之前递增while (i < end)。这意味着循环条件i将导致循环在end等于do while值时退出,但最终值将在最后一次迭代中添加到总数中

要在<=循环中获得相同的行为,请将结束条件更改为do { limit = (i + limit); i++; } while (i <= end);

i

此外,将{{1}}的初始值更改为0或1。

答案 1 :(得分:0)

你必须按如下方式交换你的行:

do {
    i++;
    limit = (i + limit);
} while ((i < end));

因此,您的do while将与您的初始while相同。

答案 2 :(得分:0)

我认为whiledo while在这种情况下的行为方式相同。试试这个

do {
    i++;
    limit = (i + limit);

} while ((i < end)); 
System.out.println("The sum of the numbers in between 0 and " + end + " is i = " + limit);