尽管程序一次扫描一个元素,但程序仍可无限获取输入

时间:2018-09-06 02:28:46

标签: java

我正在尝试将输入输入变量n。但是,在尝试输入时,它会无限卡住。

import java.util.*;
public class Hello {

public static void main(String[] args) {
        //Your Code Here
int i,r=0,max=0;
Scanner s=new Scanner(System.in);
//int i,r=0,max=0;
int n=s.nextInt();
for(i=1;i<=n;i++)
{
   while(i>0)
   {
       r+=i%10;
       i/=10;

   }
  if(max<=r)
    max=r;
    r=0;
}
System.out.print(max);

    }
}

我希望程序接受一个输入,然后在程序中继续进行并计算结果。但是,相反,它在尝试接收输入时会卡住。

2 个答案:

答案 0 :(得分:2)

问题在于while变为零时,内部i循环将终止。但是,外部for循环将很高兴保持迭代。因此,无限循环实际上是for循环,它将永远不会结束。不知道确切的代码应该做什么,我建议您直接使用另一个变量而不是i

for (i=1; i <= n; i++) {
    int j = i;

    while (j > 0) {  // use variable j to do the math; don't change loop counter i
        r += j % 10;
        j /= 10;
    }
    if (max <= r) {  // possibly record a new max value
        max = r;
    }
    r = 0;           // always reset r
}

答案 1 :(得分:0)

您应该改用while(i>1)。使用while(i>0)不起作用,因为您试图通过除法达到0,因此循环变为无限。