【问题标题】:SUM the result of a for LOOP javaSUM for LOOP java的结果
【发布时间】:2020-08-18 14:12:51
【问题描述】:

所以,我用 static 做了一个 for 循环并且工作正常。但后来我想对这个循环的值求和以获得总值。但每次我尝试打印它时,我得到的值为 0。有什么想法吗?请原谅原始编码。

我还有一个 Console 类,我没有发布它,但它来自 Scanner 类,用于“userInput”。

主类:

public class Main {

    private static Console Consola;

    public static void main(String[] args) {

        ItemPower oco = new ItemPower();
        CalculateThings oco2 = new CalculateThings();


        System.out.println(Math.ceil(oco.preçoUnitarioVIII_II));

        double unitariaT5 = Consola.userInput("Qual o Preço unitario da T5?");
        double unitariaT4 = Consola.userInput("Qual o Preço unitario da T4?");
        double unitariaCedarLog = Consola.userInput("Qual o Preço unitario da chedar Log?");
        double desejadaT5 = Consola.userInput("Qual o Preço desejada de T5?");




        System.out.println("Investimento em tier 5 Plank é de: " + oco2.tier5Plank(unitariaT5, desejadaT5));
        System.out.println("Investimento em tier 4 Plank é de: " + oco2.tier4Plank(desejadaT5, unitariaT4));
        System.out.println("Investimento em Chedar logs é de: " + oco2.chedarLog(desejadaT5, unitariaCedarLog));

        System.out.println("value of totaT5 is " +oco2.totalT5);

        CalculateThings.loopT5();
            }
    
}

类计算事物:

public class CalculateThings {

     double unitariaT5;
     double unitariaT4;
     double unitariaCedarLog;
     double desejadaT5;
     double totalT5 = 0;
     double totalT4 = 0;
     double totalCH = 0;



    public double tier5Plank(double desejadaT5, double unitariaT5){
     return desejadaT5 *  unitariaT5;

    }

    public double tier4Plank(double desejadaT5, double unitariaT4){

        return desejadaT5 *  unitariaT4;
    }

    public double chedarLog(double desejadaT5, double unitariaCedarLog){


        return desejadaT5 *  unitariaCedarLog * 3;
    }


    public double loopT5(double desejadaT5) {

        for (int i = (int) desejadaT5; i >= 1; i = (int) (i * 0.367)) {
            totalT5 += i;
                      
        }
        return totalT5;
    }

}

再次感谢您的帮助。

【问题讨论】:

  • 这不会编译,因为当您调用 loopT5() 方法时,您不会传递任何值。除此之外,在这种情况下,循环中的 i 不应该是 int 。从 double 转换为 int 时会丢失精度。
  • 另外,您似乎在计算之前打印了结果?
  • @Amongalen 那我应该在里面放什么值?

标签: java loops for-loop sum


【解决方案1】:

我在所附代码中看到的主要有 2 个问题。

首先,您没有使用参数调用loopT5() 方法。另外如果你已经有CalculateThings的实例oco2,你可以像这样调用方法

oco2.loopT5(desejadaT5);

否则你可以这样做

double d = new CalculateThings().loopT5(desejadaT5);
System.out.println("value of totaT5 is " +d);

第二,打印语句应该在调用loopT5()之后。

【讨论】:

    【解决方案2】:

    你只需要如下替换这两行。

    System.out.println("value of totaT5 is " +oco2.totalT5);
    CalculateThings.loopT5();
    

    下面两行。

    oco2.loopT5();
    System.out.println("value of totaT5 is " +oco2.totalT5);
    

    对于下面的代码,我可以得到需要的输出

    class Main {
    
        public static void main(String[] args) {
    
            CalculateThings oco2 = new CalculateThings();
    
    
            double unitariaT5 = 5;
            double unitariaT4 = 4;
            double unitariaCedarLog = 10;
            double desejadaT5 = 15;
    
    
            System.out.println("Investimento em tier 5 Plank é de: " + oco2.tier5Plank(unitariaT5, desejadaT5));
            System.out.println("Investimento em tier 4 Plank é de: " + oco2.tier4Plank(desejadaT5, unitariaT4));
            System.out.println("Investimento em Chedar logs é de: " + oco2.chedarLog(desejadaT5, unitariaCedarLog));
            oco2.loopT5(5);
            System.out.println("value of totaT5 is " + oco2.totalT5);
    
        }
    
    }
    

    Output:
    
    Investimento em tier 5 Plank é de: 75.0
    Investimento em tier 4 Plank é de: 60.0
    Investimento em Chedar logs é de: 450.0
    value of totaT5 is 6.0
    

    【讨论】:

    • 谢谢萨加尔!解决了这个问题。伙计,我什至在要求他运行 for 循环之前要求计算机给我一些东西,我感到很愚蠢......非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-06-14
    • 2016-10-04
    • 2016-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多