所以我正在学习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编程或任何语言的新手。如果你不介意的话,你能否详细解释我如何完善这个/让它变得更容易?
非常感谢!
答案 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。希望这会有所帮助。