我持续获得0作为taxRate的输出和我需要获得价值时支付的税额。税率是毛利的15%,这使得税收支付的毛利润超过税率。
import java.util.*;
public class ProfitProjection{
double totalSales;
double profitMargin;
double projectedtotalSales;
double grossProfit;
double taxRate;
double taxPaid;
double netProfit;
Scanner dataIn=new Scanner (System.in);
public ProfitProjection(){
System.out.print("Enter projected amount of total sales:");
totalSales=dataIn.nextDouble();
System.out.print("Enter the profit margin:");
profitMargin=dataIn.nextDouble();
taxRate = grossProfit * .15f;
grossProfit = totalSales * profitMargin;
netProfit = grossProfit - taxRate;
taxPaid = grossProfit * taxRate;
System.out.println("Projected total sales:" + totalSales);
System.out.println("Profit margin:" + profitMargin);
System.out.println("Estimated gross profit:" + grossProfit);
System.out.println("Tax rate:" + taxRate);
System.out.println("Amount of tax paid:" + taxPaid);
System.out.println("Estimated net profit:" + netProfit);
}
public static void main(String args[]){
new ProfitProjection();
}
}
答案 0 :(得分:3)
您正在以错误的顺序进行计算。
grossProfit
的值来计算taxRate
grossProfit
。问题是,在第一步中,您尚未计算实际grossProfit
值,其值将为0.0
。这是由于Java的默认初始化规则适用于类的所有字段。
如果某个字段没有显式初始化,或者你可以(某种方式)看到它 显式初始化之前的值发生,然后你会看到 默认的初始值。
- 对于任何其他原始类型,
false
代表boolean
,- 为零,
null
适用于任何参考类型。
简而言之,您按错误的顺序进行了计算。
解决方案:更改这两个陈述的顺序......并检查您是否在其他地方犯过同样的错误。
事实上,还有另一个重要的错误(可能)......导致这个错误未被发现。
您将这些变量声明为实例字段。鉴于到目前为止编写的代码,它们可能已被声明为局部变量。如果您已经这样做,那么编译器会告诉您grossProfit
在初始化之前正在使用。
我说这是可能错误,因为它取决于是否有更多的代码/功能需要稍后添加。
还有其他一些错误:
taxRate
变量名称错误。税率为0.015f。该变量包含的是实际应纳税额,而不是税率。
您应该尽可能准确地指定税率。使用0.015
,而不是0.015f
。 eff表单是float
字面值而不是double
字面值。
答案 1 :(得分:2)
您只声明grossProfit
而没有为其指定任何值,默认为0.0
public ProfitProjection(){
grossProfit = 1.0; // assign value to it in your constructor
taxRate = grossProfit * .15f;
}
答案 2 :(得分:2)
在这一行:
taxRate = grossProfit * .15f;
您从未初始化grossProfit
,但仅声明了它。因此,该值被视为0,因此taxRate
被设置为0.
答案 3 :(得分:0)
您的问题是您在设置taxRate之前没有设置毛利。所以上面的答案说的是略微正确的,但不是100%我会告诉你:
public class ProfitProjection{
double totalSales;
double profitMargin;
double projectedtotalSales;
double grossProfit;
double taxRate;
double taxPaid;
double netProfit;
Scanner dataIn=new Scanner (System.in);
public ProfitProjection(){
System.out.print("Enter projected amount of total sales:");
totalSales=dataIn.nextDouble();
System.out.print("Enter the profit margin:");
profitMargin=dataIn.nextDouble();
grossProfit = totalSales * profitMargin; //Swapped this line
taxRate = grossProfit * .15f; //With this line to have grossProfit set at a value before multiplication.
netProfit = grossProfit - taxRate;
taxPaid = grossProfit * taxRate;
System.out.println("Projected total sales:" + totalSales);
System.out.println("Profit margin:" + profitMargin);
System.out.println("Estimated gross profit:" + grossProfit);
System.out.println("Tax rate:" + taxRate);
System.out.println("Amount of tax paid:" + taxPaid);
System.out.println("Estimated net profit:" + netProfit);
}
public static void main(String args[]){
new ProfitProjection();
}
}
希望这有帮助!
编辑: 我在上面的代码中所做的更改是我交换了grossProfit的设置和taxRate的设置。我还在这些行上添加了评论。