首页 > 解决方案 > 我的程序不断循环并且从不满足要求

问题描述

大家好,我正在开发这个程序,该程序需要用户输入 3 个角度。第一种方法是 inputAngles,它告诉用户输入值。我必须拥有它,如果用户为角度 1 输入的值大于 180,或者如果他们为角度 2 输入的值使得角度 1 和角度 2 的总和大于 180,或者如果用户为角度 3 输入的值使得总和如果所有角度不等于 180,那么他们会收到再次输入该角度的提示。

我让程序不断循环,永远不会继续下一个方法。最后一个角度不断循环,永远不会终止。任何帮助将不胜感激。

    public int inputAngles() {
    
    int sumofAngOneTwo = angle1 + angle2;                                
      while (true) {
        System.out.println("Enter the first angle of the triangle :");
        angle1 = input.nextInt();
        while (angle1 > 180) {
            System.out.println("First angle must be less than 180");
            System.out.println("Enter the first angle of the triangle :");
            angle1 = input.nextInt();
        }

        System.out.println("Enter the second angle of the triangle :");
        angle2 = input.nextInt();
        while (angle2 < sumofAngOneTwo) {
            System.out.println("Sum of first two angles must be less than 180");
            System.out.println("Enter the second angle of the triangle :");
            angle2 = input.nextInt();
        }
         int sumOfAngles = angle1 + angle2 + angle3;
        System.out.println("Enter the third angle of the triangle :");
        angle3 = input.nextInt();
        while (sumOfAngles >= 180) {
            System.out.println("Try again");
            System.out.println("Enter the third angle of the triangle :");
            angle3 = input.nextInt();
        }
        
    }
    
    
}

标签: java

解决方案


重要的是要理解这不是数学等式的陈述:

int sumofAngOneTwo = angle1 + angle2; 

也就是说,它并没有说无论 angle1 和 angle2 的未来值如何,sumOfAngOneTwo 将等于它们的总和。

而是赋值的编程操作,在执行中遇到的点,取当时的角度1的值,当时的角度2的值,计算它们的和,并将结果赋给变量sumOfAngOneTwo .

此后,角度 1 和角度 2 的变化不会影响 sumOfAngOneTwo 的值。这将保持不变,直到执行另一个赋值语句,其中 sumOfAngOneTwo 出现在左侧。

tl; 博士 - 这是一个任务,而不是一个等式。


推荐阅读