代码之家  ›  专栏  ›  技术社区  ›  Jeff

如何在java中的for循环中使用公式

  •  3
  • Jeff  · 技术社区  · 8 年前

    我是一个java程序员新手,学习基本的youtube视频和溢出论坛,我在一本教科书上遇到一个问题,要求我使用for循环程序打印出这个表格,并填写每个空白

    Number   Square   Cube   (n+1)/(2n-18)
    ______________________________________
    1         #        #          #
    2         #        #          #
    3         #        #          #
    4         #        #          #
    5         #        #          #
    

    我想我应该试试它来测试自己。我提出了下面的程序,它可以完美地处理表格中的数字、平方和立方体部分,但我不知道如何使用给定的公式生成数字。我初始化为变量(double)的公式不会打印实际结果,老实说,我不知道该怎么做。我更喜欢简单的解释而不是复杂的解释,对代码的简单更改而不是复杂的更改。正如我所说的,我是一个初学者,许多不同的方法可能会直接超过我的头脑。提前非常感谢(还有一个额外的任务要求我打印出每一列的总和。我根本不知道怎么做,如果可能的话,我希望得到一个解释,但如果我没有收到,我不会介意)

    int number;
    int maxValue;
    
    Scanner keyboard = new Scanner(System.in);
    System.out.println("how many numbers do you want the max value to be");
    maxValue = keyboard.nextInt();
    
    System.out.println("Number\tSquare\tCube (n+1)/(2n-18)");
    System.out.println("--------------------------------");
    for (number = 1; number <= maxValue; number++) {
        double formula = (number + 1) / (number * 2);
        System.out.println(
            number + "\t\t\t" + number * number + "\t\t\t" +
            number * number * number + "\t\t\t" + formula);
    }
    
    4 回复  |  直到 8 年前
        1
  •  3
  •   Maurice Perry    8 年前

    您的公式应为:

    double formula = (double)(number + 1) / (number * 2 - 18);
    

    两个问题:

    • 缺失-18
    • 除非将至少一个操作数强制转换为double,否则/正在进行整数除法

    哦还有一件事:当数字==9时,有一个被零除的数。双除法给出“无穷大”,而整数除法抛出异常。

        2
  •  2
  •   Tim Biegeleisen    8 年前

    你的公式与教科书不符。试试这个:

    System.out.println("Number\tSquare\tCube (n+1)/(2n-18)");
    System.out.println("--------------------------------");
    
    for (int number=1; number <= maxValue; number++) {
        double square = Math.pow(number, 2);
        double cube = Math.pow(number, 3);
        double formula = (number + 1) / (number * 2 - 18);
        System.out.println(number + "\t\t\t" + square + "\t\t\t" + cube + "\t\t\t" + formula);
    }
    

    注:正如@MauricePerry所指出的,输入9将导致被零除。我认为您应该控制输入值,而不是试图捕捉这个未经检查的异常,这样就不会发生这种情况。

        3
  •  1
  •   vinS Pooja Pawar    8 年前

    您的公式不正确,缺少一些。

        int number;
        int maxValue;
    
        Scanner keyboard = new Scanner(System.in);
        System.out.println("how many numbers do you want the max value to be");
        maxValue = keyboard.nextInt();
    
        System.out.println("Number\t\tSquare\t\tCube \t\t(n+1)/(2n-18)");
        System.out.println("-------------------------------------------------------");
        for (number = 1; number <= maxValue; number++) {
            double formula = (number + 1) / (number * 2 - 18);
            System.out
                    .println(number + "\t\t" + number * number + "\t\t" + number * number * number + "\t\t" + formula);
    
        }
    
        4
  •  1
  •   kosani    8 年前

    我不确定你得到了哪些输出,但在我看来你正在使用 integer division 当试图得到(n+1)/(2n-18)的结果时。

    尝试使用:

    double decimalNumber = (double) number;
    double formula = (decimalNumber + 1) / (decimalNumber * 2 - 18);