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

How can I use a formula in a for loop in java

我是初学者 java 程序员,正在学习基本的 youtube 视频和溢出论坛,我在教科书上遇到了一个问题 sheet 让我使用 for 循环程序并打印这个table出来还有填空

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

我想我应该尝试一下来测试自己。我想出了以下程序,它非常适合 table 的数字、正方形和立方体部分,但我不明白如何使用给定的公式生成数字。我初始化为变量 (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);
}

你的公式应该是:

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

两期:

  • 缺少-18
  • / 正在进行整数除法,除非您将至少一个操作数转换为双精度数

哦!还有一件事:当 number==9 时,除以零。双除法给你 "Infinity" 而整数除法抛出异常。

你的公式与课本不符。试试这个:

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 会导致被零除。我认为您应该控制您的输入值,以免发生这种情况,而不是试图捕获这个未经检查的异常。

你的公式不正确,少了几个\t。

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

    }

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

尝试使用:

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