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

标签 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);

    }
}

我希望程序接受一个输入,然后在程序中进一步处理并计算结果。但是,它在尝试接收输入时卡住了。

最佳答案

问题是当i变为零时,内部while循环将终止。但是,外部 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
}

关于java - 尽管程序一次扫描一个元素,但程序仍在无限地获取输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52195670/

相关文章:

java - Jasper Report 卡住 html 报告的标题

java - Android实现多语言支持

java - 我如何在 Java 中转换这个日期?

java - JBOSS如何识别EAR文件

java - 复制包含数组列表的数组列表

java - 如何告诉 Xalan 转义 HTML 属性中的字符

java - 重复的 Spring Batch 作业实例

java - 如何在java中将图像转换为base64字符串?

java - 从WebSphere MQ消息检索时的字节长度差异

java - 如何处理 Retrofit 2 中不同模式的错误?