希望转换以下代码,以便在"中添加整数值。循环到" 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;回到它,但这会使一切变得更糟。不知道我在这里做错了什么,但感谢任何帮助。
答案 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)
我认为while
和do 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);