学习/修改Java

时间:2010-08-22 05:31:51

标签: java

所以我正在学习Java,我希望得到一些关于如何完善/增强我用来计算三角形区域的小应用程序的帮助。

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {

        Scanner in = new Scanner(System.in);

        System.out.println("What's the base?");
            int base = in.nextInt();
            System.out.println();

        System.out.println("What's the height?");
            int height = in.nextInt();
            System.out.println();

            int area = base * height / 2;

        System.out.println("The area of the triangle is: " +area+ ".");

    }

}

请注意,我是使用Java编程或任何语言的新手。如果你不介意的话,你能否详细解释我如何完善这个/让它变得更容易?

非常感谢!

4 个答案:

答案 0 :(得分:2)

那里没有太多简化和完善的东西。关于我唯一要修改的是计算面积的线。也许使用浮点数来避免舍入到int。

float area = (float)(base * height) / 2;

就此而言,您也可以将输入更改为浮点数:

float base = in.nextFloat();
...
float height = in.nextFloat();

然后将计算行更改为:

float area = base * height / 2;

因为现在你不必投射输入。

float会给你single-precision个浮点数。如果您想要疯狂精确,请使用double

答案 1 :(得分:2)

将其分解为对象 您的示例显示了语法的正确用法,但您尚未证明对象的知识 考虑编写Triangle类,并将区域计算实现为成员函数 接下来,您可以浏览polymorphism 通过将区域计算提取到名为Shape的公共接口中来重构Triangle类 所有实现Shape的类必须提供接口规定的计算区域的方法 编写一个名为Square的新类,它实现了接口Shape。

答案 2 :(得分:1)

area不应为int类型。设为double 编辑:

double area = base * height / 2.0;

您可以捕获用户未输入正确值时抛出的异常,并再次询问他(使用循环)。

如果结果的小数位数过多,请将其格式化:

System.out.println("The area of the triangle is: " +new DecimalFormat("0.000").format(area));

答案 3 :(得分:1)

你可以通过Shape类和Triangle子类来实现更多OO。计算区域可以使用Strategy pattern。希望这会有所帮助。