【问题标题】:How can I use a formula in a for loop in java如何在java的for循环中使用公式
【发布时间】:2017-12-05 11:51:24
【问题描述】:

我是一名初级 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);
}

【问题讨论】:

  • “公式 (...) 不打印实际结果”是什么意思?实际输出是什么,您期望什么?对于初学者,您可以尝试创建一个private 方法(例如调用它calculateFormula),它将接收您的number 作为参数并返回您所期望的double

标签: java for-loop structure formula


【解决方案1】:

你的公式应该是:

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

两个问题:

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

哦!还有一件事:当 number==9 时,除以零。双除法为您提供“无穷大”,而整数除法则引发异常。

【讨论】:

    【解决方案2】:

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

    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 会导致除以零。与其试图捕捉这个未经检查的异常,我认为你应该控制你的输入值,这样就不会发生这种情况。

    【讨论】:

    • 数字 == 9 时的异常
    【解决方案3】:

    您的公式不正确,您缺少一些 \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);
    
        }
    

    【讨论】:

    • 数字 == 9 时的异常
    • 是的,需要处理。不清楚应该在那里打印什么。
    【解决方案4】:

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

    尝试使用:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-11-19
      • 1970-01-01
      • 1970-01-01
      • 2023-01-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多