2013-08-20 33 views
0

你好,我是一名初学者,正在努力学习java编程。 教材中的问题:代码格式,结构,一致性

编写一个程序,帮助人们决定是否购买混合动力汽车。你的程序的投入应该是: •新车 的成本•估计英里每年 驱动•估算天然气价格•每加仑 英里•估计的转售价值的效率5年

计算后拥有汽车五年的总成本。 (为了简单起见,我们不会考虑融资成本。)从Web获取新车和二手混合动力车和可比较车的现实价格。运行你的程序两次,使用今天的天然气价格和每年15,000英里。包含伪代码并且程序将随您的任务一起运行。

我的问题:我得到的代码是正确的,我的程序运行完美。我主要关心的是如何以专业的方式呈现这一点。我怎样才能以专业的方式构建它,为了让它发布(例如)我需要做些什么。我试图习惯于组织和整齐地呈现我的代码。任何建议将有所帮助,谢谢!

public class car 
{ 



public static void main(String[] args) 

{ 

    Scanner in = new Scanner(System.in); 
    System.out.println("Car Model: "); 
    String carModel = in.nextLine(); 
    System.out.print("Cost of Car: "); 
    int costOfCar = in.nextInt(); 
    System.out.print("The estimated miles driven per year: "); 
    int milesDriven = in.nextInt(); 
    System.out.print("The estimated gas price: "); 
    int gasPrice = in.nextInt(); 
    System.out.print("Efficiency in miles per gallon: "); 
    int milesPerGallon = in.nextInt(); 
    System.out.print("Estimated resale value after 5 years: "); 
    int retailValue = in.nextInt(); 



    double carEfficiency = (double) gasPrice/milesPerGallon; 
    double milesDrivenCost = (double) milesDriven * carEfficiency * 5; //5 years of driving 
    double retailValueInFiveYears = retailValue; 
    double carUseLoss = costOfCar - retailValueInFiveYears; 
    double totalCost = carUseLoss + milesDrivenCost; 
    System.out.print(carModel + " will cost you after 5 years: "); 
    System.out.format(" %,d%n", Math.round(totalCost)); 

    } 
} 
+1

按照面向对象。 – Dipak

+3

http://codereview.stackexchange.com/将是正确的地方 – xyz

+0

首先尊重Java命名约定,并正确缩进代码。 –

回答

2
  1. 我希望这不是你真正的压痕。
  2. 使用Java命名约定。特别是car应该是'Car'。
  3. 我会说增加一些评论,但变量名称是相当具有描述性的。
  4. 将JavaDoc注释添加到该类和main方法中。
  5. 请务必明确关闭资源。
  6. 用户可能想要输入几个带小数的输入。使用double而不是int s。扫描仪将接受没有小数点的数字。
  7. 也许你可以包含生成的JavaDoc HTML输出。

Java代码:

import java.util.Scanner; 

/** 
* Computes a car's 5-year cost of ownership. 
* Usage: 
* java Car 
* 
* @author Mario Rossi 
*/ 
public class Car { 

    /** 
    * Computes a car's 5-year cost of ownership. 
    * 
    * @param args Not used. 
    */ 
    public static void main(String[] args) { 

     Scanner in = new Scanner(System.in); 
     System.out.println("Car Model: "); 
     String carModel = in.nextLine(); 
     System.out.print("Cost of Car: "); 
     double costOfCar = in.nextDouble(); 
     System.out.print("Estimated miles driven per year: "); 
     double milesDriven = in.nextDouble(); 
     System.out.print("Estimated gas price in $ per gallon: "); 
     double gasPrice = in.nextDouble(); 
     System.out.print("Efficiency in miles per gallon: "); 
     double milesPerGallon = in.nextDouble(); 
     System.out.print("Estimated resale value after 5 years: "); 
     double retailValueInFiveYears = in.nextDouble(); 
     in.close(); 

     double carEfficiency = gasPrice/milesPerGallon; 
     double milesDrivenCost = milesDriven * carEfficiency * 5; //5 years of driving 
     double carUseLoss = costOfCar - retailValueInFiveYears; 
     double totalCost = carUseLoss + milesDrivenCost; 
     System.out.print(carModel + " will cost you after 5 years: "); 
     System.out.format(" %,.2f%n", totalCost); 
    } 
} 
1

所有你需要使用面向对象的方法首先即遵循的规则:

  • 抽象:确定实体类和它们的属性 和操作。你已经创建了一个Class Car,但没有正确定义它的属性和操作,所以仔细考虑它。
  • Enacapsulation:数据隐藏,请确保您使用适当的访问 符为您的类的属性和操作
  • 传承:汽车是一个很抽象的东西,让你更好地定义一个 抽象类。并从您的基地车类继承真实的课程,如福特汽车,Merc Car 。
  • 多态性:当您定义您的汽车及其子类时,您可能需要将抽象类中定义的方法覆盖到您的子类中。

包装软件:你能做到以多种方式:

  1. 包是一个可执行的JAR,这样用户就可以简单地双击它,运行
  2. 创建一个exe文件,它在内部调用你的java代码。

你可能需要编写一个版本注释或小文件一提的是JRE应该在计算机上安装,路径应设置等

希望它能帮助!

+0

我觉得'汽车'只是一个任意的名字。 OP没有试图将汽车表示为一个实体,只是试图运行一些数字。 – jpmc26

+0

@ jpmc26理想情况下,汽车应该是一个具有属性modelNo,成本等的类,如他在代码中使用的。由于Car是抽象的,所以它应该是一个抽象类。其他类应继承,如我在我的答案中提到的。 –

+0

我想我们对如何编写OO代码有不同的看法。我已经开始订阅OO关于对象间通信的学派。一个“汽车”类没有任何交流,没有提供的服务。它至多是一个持有模型,成本和转售价值的DTO。相反,您可能需要某种“计算器”类,它提供了计算值的功能,也可能需要读取输入。我一直深受这个影响:[为什么你不嘲笑](http://www.youtube.com/watch?v=R9FOchgTtLM)。 – jpmc26

0

,你说你是初学者,开始学习Java的,你必须始终保持以下事项,

  1. 从Java是面向对象的,你的程序就像是为C程序,你必须使用OOP的概念像类,对象和所有。

  2. 在编写程序时,应该使用正确的缩进。

  3. 虽然给变量名称,方法使用适当的命名约定,不要忘记给予注释,以便新用户可以为什么目的得到你给出的东西。

  4. 当你学习新事物时,尝试在你的程序或项目中实现这些。

  5. 尝试打包并尽量保留小型课程和程序,以免您将来也不会感到困惑以及其他用户。

如果你发现这个答案是非常有用的,然后不要忘记标记为接受..