3

刚开始学习Java,写了一个计算用户选择形状面积的基本程序。我可以对我做对错的事情进行批评和评论吗?我猜很多会是糟糕的编程,但这就是我在这里的原因。

还有一个问题,在调用我的方法时,我需要输入完整路径,即 areaprog.areacode.. 你知道这是为什么吗?以下两个类的代码:

主程序

package areaprog;

import java.util.Scanner;

public class mainprog {


    public static void main (String [] args){

        //Area Menu Selection
        System.out.println("What shape do you need to know the area of?\n" +
        "1: Square?\n" +
        "2: Rectangle?\n" +
        "3: Triangle?\n" +
        "4: Circle? \n" +
        "5: Exit\n"     
        );

        //User input for menu
        Scanner reader = new Scanner(System.in);
        System.out.println("Number: ");
        int input = reader.nextInt();
        reader.nextLine();

        //Depending on user selection, depends on what method is called using switch.
    Scanner scan = new Scanner(System.in);

        //Square selection
        if (input == 1){
            System.out.println("What is a length of 1 side of the Square?\n");
                double s1 = scan.nextInt();
                double SqAns = areaprog.areacode.square(s1);
            System.out.println("The area of you square is: " + SqAns);
        }

        //Rectangle selection    
            if (input == 2){
            System.out.println("What is the width of your rectangle?.\n");
                double r1 = scan.nextInt();
            System.out.println("What is the height of your rectangle?\n");
                double r2 = scan.nextInt();
                double RecAns = areaprog.areacode.rect(r1, r2);
            System.out.println("The area of your rectangle is: " + RecAns);    
            }
        //Triangle selection
        if (input == 3){
            System.out.println("What is the base length of the triangle?.");
                double t1 = scan.nextInt();
            System.out.println("What is the height of your triangle?");
                double t2 = scan.nextInt();
                double TriAns = areaprog.areacode.triangle(t1, t2);
            System.out.println("The area of your triangle is " + TriAns);
        }
        //Circle selection
        if (input == 4){
            System.out.println("What is the radius of your circle?.");
                double c1 = scan.nextInt();
                double CircAns = areaprog.areacode.circle(c1);
            System.out.println("The area of your circle is " + CircAns);    

        }
        //Exit application
        if (input == 5){
            System.out.println("Goodbye.");
        System.exit(0);
        }


    }

}

面积计算

package areaprog;


public class areacode {

    public static double rect(double width, double height) {
        double a_value = width * height;

        return a_value;


    }

    public static double circle(double radius){
        double PI = Math.PI;
        double a_value = PI * Math.pow(radius, 2);

        return a_value;


    }

    public static double square(double side) {
        double a_value = Math.pow(side, 2);

        return a_value;


    }

    public static double triangle(double base , double height) {
        double a_value = (base/2)* height;

        return a_value;


    }
}
4

2 回答 2

2

正如本杰明所说,你的问题属于别处。但这里有几点意见。

  • 您的课程应该使用大写字母。

  • 命名事物很重要。Areacode 是一个奇怪的名字,你应该描述它的功能,比如 AreaCalculator。

  • 函数名应该描述它的作用,所以你应该使用 getCircleArea 之类的东西而不是 circle

  • 在您的主要方法中,导入包可能会更好,因此您只需要说 AreaCalculator.getCircle(5); 例如,而不是每次都输入包。

但是如果你看整个事情,这是一个非常好的第一个程序。如果你知道你为什么要做你所做的一切(例如为什么第二课是静态的是一个好习惯),你应该很快就会做得很好。

您可以将您在 main 方法中所做的几件事放在单独的方法中,以获得更好的程序结构和更轻松的调试。

编辑/您的问题:如果您在文件开头导入包,则不需要编写整个路径。这是上面的评论之一。

于 2013-01-14T08:44:53.643 回答
0

使用 java 的编码约定。

  1. 类名以大写字母开头,在类名中,每个新名词和动词等的第一个字母都是大写字母。

如果类名是 mynewbook 那么它应该写成 MyNewBook 。

  1. 变量名总是以小写字母开头,并且在变量名中,每个新名词和动词等的第一个字母都是大写字母。

    如果变量名是 mynewbook 那么它应该写成 myNewBook..

  2. 对于常量... [最终变量] 所有字母都大写,您应该在所有新动词、名词等之间加上“_”下划线...

    如果最终变量名是 mynewbook 那么它应该写成 MY_NEW_BOOK....


而不是a_value,养成写aValue的习惯

于 2013-01-14T08:52:25.250 回答