2013-10-09 67 views
-1

所以我有这个计划,应该采取用户输入样车的名字,并计算价格,并每月支付就在这里:用户输入

import java.lang.*; 
import java.io.*; 
import java.util.*; 

public class NewCar 
{ 

private int year; 
private String make; 
private String model; 
private double sticker,discount,tax,finalP,final2,final3; 
private int month,monPayt; 
private int abbrev1; 
private String abbrev2; 
private String abbrev3; 

    public NewCar(int year, String make, String model) 
    { 
     this.year= year; 
     this.make= make; 
     this.model = model; 
    } 

    public int getYear() 
    { 
     return year; 
    } 

    public String getMake() 
    { 
     return make; 
    } 

    public String getModel() 
    { 
     return model; 
    } 

    public String carDesc() 
    { 
     return year + " " + make + " " + model; 
    } 

    public String carAbbrev() 
    { 
     abbrev1 = year % 100; 
     String abbrev2 = make.substring(0,1); 
     String abbrev3 = model.substring(0,1); 
     return abbrev1 + abbrev2 + abbrev3; 
    } 


    public double calcFinalPrice() 
    { 
     final2 = (sticker - discount); 
     final3 = final2 * tax; 
     finalP = final2 + final3; 
     return finalP; 
    } 

    public int calcZeroPctMonPayt() 
    { 
     monPayt = (int)finalP/month; 
     return monPayt; 
    } 


    public String toString() 
    { 
     return "You want to purchase a " + carDesc() + ". Abbreviation: " + carAbbrev(); 
    } 


} 

,我和本测试仪进行测试类:

import java.lang.*; 
import java.io.*; 
import java.util.*; 

public class NewCarTester 
{ 





    public static void main(String[] args) 
    { 
     Scanner scan = new Scanner(System.in); 

     System.out.println("Enter the car's Year, Make and Model: "); 
     int year = scan.nextInt(); 
     String make = scan.next(); 
     String model = scan.next(); 

     System.out.println("Enter the Sticker Price: "); 
     int sticker = scan.nextInt(); 

     System.out.println("Enter the discount: "); 
     int discount = scan.nextInt(); 

     System.out.println("Enter the Sales Tax Rate: "); 
     int tax = scan.nextInt(); 

     System.out.println("Enter the number of Months at Zero Percent Interest: "); 
     int month = scan.nextInt(); 

     NewCar c = new NewCar(year, make, model); 

     System.out.println(c.toString()); 
     System.out.println("Final Price : " + c.calcFinalPrice()); 
     System.out.println(c.calcZeroPctMonPayt()); 





    } 
} 

现在一切正常接受calcualtion方法,每当我打电话的计算方法之一我得到0.0每次。这导致我相信用户输入的输入没有正确存储到他们应该进入的变量中。任何人都可以确定问题并帮助我解决问题吗?谢谢!此外,还有一个问题是,如果用户输入含有小数点的销售税,程序会收到错误并停止运行,任何人都可以对此有所了解?

+0

在什么,我的答案中看到到目前为止顶部,你可能想'(INT)(finalP /月)',而不是'(INT)finalP/month'在'calcZeroPctMonPayt()'中。如果我记得正确的话,后者将'finalP'转换为'int' *,然后执行除法。 –

回答

0

我没有看到你的测试中的任何地方,你设置的税,折扣等...到NewCar对象。

您必须遵守每个公共属性的get和set面向对象的方法

public double getTax() 
{ 
    return tax; 
} 

public void setTax(double taxVal) 
{ 
    this.tax = taxVal; 
} 

然后在你创建的对象,你可以这样做:

NewCar c = new NewCar(year, make, model); 
c.setTax(5.00); 

等。

0

您实际上并没有将sticker,discounttax的值提供给的实例210,默认为0

您需要提供一些方法来为您提供从用户那里得到的值到这个类

也许通过构造函数,你设置yearmakemodel或通过setter方法相同的方式,例如...

public void setSticker(double sticker) { 
    this.sticker = sticker; 
} 
1

仔细一看。在calcFinalPrice(使用的variabkle)方法即

final2 = (sticker- discount); 

    final3 = final2 * tax; 

    finalP = final2 + final3; 

    return finalP; 

在创建对象的基于它们的数据类型的时间以上的get默认值中使用的所有变量。

修改您的构造函数如下,你应该得到计算出的最终价格。

public NewCar(int year, String make, String model,int sticker,int discount,int tax,int month) 
    {  
    this.year= year; 
    this.make= make; 
    this.model = model; 
    this.sticker=sticker; 
    this.discount=discount; 
    this.tax=tax; 
    this.month=month; 
} 
+0

删除构造函数的开始和结束的开始。 –

1

您没有通过参数,因为折扣,税率等通过他们像默认情况下被分配零。使用下面的代码,将解决你的问题

import java.lang.*; 
import java.io.*; 
import java.util.*; 

public class NewCar 
{ 

private int year; 
private String make; 
private String model; 
private double sticker,discount,tax,finalP,final2,final3; 
private int month,monPayt; 
private int abbrev1; 
private String abbrev2; 
private String abbrev3; 

    public NewCar(int year, String make, String model,double sticker,double discount,double tax,int month) 
    { 
     this.year= year; 
     this.make= make; 
     this.model = model; 
     this.sticker=sticker; 
     this.discount=discount; 
     this.tax=tax; 
     this.month=month; 
    } 

    public int getYear() 
    { 
     return year; 
    } 

    public String getMake() 
    { 
     return make; 
    } 

    public String getModel() 
    { 
     return model; 
    } 

    public String carDesc() 
    { 
     return year + " " + make + " " + model; 
    } 

    public String carAbbrev() 
    { 
     abbrev1 = year % 100; 
     String abbrev2 = make.substring(0,1); 
     String abbrev3 = model.substring(0,1); 
     return abbrev1 + abbrev2 + abbrev3; 
    } 


    public double calcFinalPrice() 
    { 
     final2 = (sticker - discount); 
     final3 = final2 * tax; 
     finalP = final2 + final3; 
     return finalP; 
    } 

    public int calcZeroPctMonPayt() 
    { 
     monPayt = (int)finalP/month; 
     return monPayt; 
    } 


    public String toString() 
    { 
     return "You want to purchase a " + carDesc() + ". Abbreviation: " + carAbbrev(); 
    } 


} 






class NewCarTester 
{ 





    public static void main(String[] args) 
    { 
     Scanner scan = new Scanner(System.in); 

     System.out.println("Enter the car's Year, Make and Model: "); 
     int year = scan.nextInt(); 
     String make = scan.next(); 
     String model = scan.next(); 

     System.out.println("Enter the Sticker Price: "); 
     int sticker = scan.nextInt(); 

     System.out.println("Enter the discount: "); 
     int discount = scan.nextInt(); 

     System.out.println("Enter the Sales Tax Rate: "); 
     int tax = scan.nextInt(); 

     System.out.println("Enter the number of Months at Zero Percent Interest: "); 
     int month = scan.nextInt(); 

     NewCar c = new NewCar(year, make, model,sticker,discount,tax,month); 

     System.out.println(c.toString()); 
     System.out.println("Final Price : " + c.calcFinalPrice()); 
     System.out.println(c.calcZeroPctMonPayt()); 





    } 
}