【问题标题】:JAVA while loop inside the methodJAVA方法里面的while循环
【发布时间】:2017-06-26 11:04:06
【问题描述】:

Java 新手。我需要创建一个方法Sum 以包含while 循环。该方法将采用一个参数并计算该数字的总和。这就是我所拥有的:

public class Summing {

public static void main(String [] args){

    double result=5;

    Summing mySum=new Summing();

    double Sum = mySum.Sum(result);

    System.out.printf("\nthe sum is :%d " , Sum);

}

public static double Sum(double result) {
    result = 5;

    double i = 1;

    while (i <= result)

    {
        result += i;

        System.out.println("count:" + result);

        i = i++;

    }
    return result;
}
}

但看起来我有一个无限循环,它一直在计数。感谢任何帮助。

【问题讨论】:

  • 嘿阿里,你会这么好心并正确格式化(缩进!)你的代码吗?干杯。
  • 不要写i=i++;,只写i++;
  • 这是一个无限循环,因为您在循环中递增 result 变量,使得 i 永远不可能到达 result。使用另一个变量来跟踪总和。
  • 另外,您不需要 Summing 的实例来调用静态方法。

标签: java loops methods while-loop


【解决方案1】:

你已经写了 i=i++ ,它不会增加 i 的值。这相当于创建一个这样的变量:

i=i++ ; 

等价于

tmp=i ;
i=i+1 ;
i=tmp ;

你应该只写 i++ 或 i=i+1 。

【讨论】:

    【解决方案2】:

    这里是:

    result += i;
    

    结合i++

    使循环无限,因为它们都同时递增,这使得无法满足此条件

     while (i <= result)
    

    【讨论】:

      【解决方案3】:

      为您的参数指定另一个名称(例如“limit”),并将结果声明为 double。
      哦,你增加i 的方式不正确。

        public static double Sum(double limit) { 
          double result=5;
          double i=1;
          while(i<=limit) {
            result+=i;
            System.out.println("count:" + result);
            i++;
          } 
          return result;
        }
      

      【讨论】:

        【解决方案4】:

        我已经删除了将您的代码置于无限循环中的条件。

        你所做的是在条件 while(i 中你增加了 i 并导致每次迭代导致它进入无限循环。

         public class Summing {
        
                public static void main(String [] args){
        
                    double result=5;
        
                    Summing mySum=new Summing();
        
                    double Sum = mySum.Sum(result);
        
                   // System.out.printf("\nthe sum is "+Sum);
        
                }//end main
        
                public  double Sum(double result) {
        
                    double sum=0;
                    double i=1;
        
                    while (i <= result) {
                        sum += i;
                        i++;
                        System.out.printf("\nthe sum is "+sum);
                    } return result;
        
                }//end sum
        
            }//end Summing
        

        【讨论】:

        • 现在可以了吗..正确答案不需要给负分
        • 对不起,我忘了在那儿解释
        • 您已经解决了这个问题,所以现在可以了。请记住对所有答案都这样做。 OP 和未来的读者将从中受益。
        【解决方案5】:

        1) Sum 方法声明为静态,因此您不需要创建单独的 Summing 对象。 2)在 Sum 方法中,您覆盖了结果参数,您将其放入 main。 3) 在循环中,你会增加结果以及 i,所以 i 总是会小于结果。 结果,你应该有这样的东西:

        public class Summing {
        
        public static void main(String [] args){
        
            double result=5;
            double sum = Summing.Sum(result);
            System.out.printf("\nthe sum is :%d " , Sum);
        }
        
        public static double Sum(double iterations) {
            double i = 1;
            double result = 0;
            while (i < = iterations){
                result += i;
                System.out.println("count:" + result);
                i++;
            }
            return result;
        }
        }
        

        【讨论】:

          猜你喜欢
          • 2020-03-07
          • 1970-01-01
          • 2019-01-13
          • 2023-03-30
          • 1970-01-01
          • 1970-01-01
          • 2014-03-29
          • 2014-03-13
          • 2018-06-09
          相关资源
          最近更新 更多