Java FOR循环递增并将新变量传递给方法
我试图将变量传递给函数,让它通过for循环进行循环,并将新变量传递给现有函数。例如,我原来的类是这样的Java FOR循环递增并将新变量传递给方法,java,loops,for-loop,while-loop,Java,Loops,For Loop,While Loop,我试图将变量传递给函数,让它通过for循环进行循环,并将新变量传递给现有函数。例如,我原来的类是这样的 class Calculations { //declare the variables in the class double TotalPay; double Sales; double Salary; double Commission; double SalesTarget; double AccelFactor; double SalesIncentive; double Incr
class Calculations {
//declare the variables in the class
double TotalPay;
double Sales;
double Salary;
double Commission;
double SalesTarget;
double AccelFactor;
double SalesIncentive;
double Increment;
double NewAccelFactor;
double TableSales = Sales * .5;
public Calculations(double Sales, double Salary, double Commission, double SalesTarget, double AccelFactor, double SalesIncentive, double Increment) { //calculations function - can be used when processing multiple inputs as well
this.Salary = Salary;
this.Sales = Sales;
this.Commission = Commission;
this.AccelFactor = AccelFactor;
this.SalesTarget = SalesTarget;
this.SalesIncentive = SalesIncentive;
this.Increment = Increment;
}
public void calculatePay() { //calculate the total pay using the above variables that have been set
if (Sales < SalesIncentive) {
TotalPay = Salary + (Sales * Commission);
}
if (Sales == SalesIncentive || (Sales > SalesIncentive && Sales < SalesTarget * 2)) {
TotalPay = Salary + ((Sales * Commission) * AccelFactor);
}
if (Sales > SalesTarget * 2) {
TotalPay = Salary + ((Sales * Commission) * (AccelFactor * 2));
}
if (Sales > SalesTarget * 3) {
TotalPay = Salary + ((Sales * Commission) * (AccelFactor * 3));
}
if (Sales > SalesTarget * 4) {
TotalPay = Salary + ((Sales * Commission) * (AccelFactor * 4));
}
if (Sales > SalesTarget * 5) {
TotalPay = Salary + ((Sales * Commission) * (AccelFactor * 5));
}
if (Sales > SalesTarget * 6) {
TotalPay = Salary + ((Sales * Commission) * (AccelFactor * 6));
}
if (Sales > SalesTarget * 7) {
TotalPay = Salary + ((Sales * Commission) * (AccelFactor * 7));
}
if (Sales > SalesTarget * 8) {
TotalPay = Salary + ((Sales * Commission) * (AccelFactor * 8));
}
if (Sales > SalesTarget * 9) {
TotalPay = Salary + ((Sales * Commission) * (AccelFactor * 9));
}
if (Sales > SalesTarget * 10) {
TotalPay = Salary + ((Sales * Commission) * (AccelFactor * 10));
}
}
public double getTotalPay() {
return TotalPay; //return total pay to use in the output
}
class TableOutput { //trying to output the table, but it's not working so well
//declare the variables in the class
double TotalPay;
double Sales;
double Salary;
double Commission;
double SalesTarget;
double AccelFactor;
double SalesIncentive;
double Increment;
double NewAccelFactor;
double TableSales;
double newSales;
double totalSales;
//int j = 0;
public TableOutput(double Sales, double Salary, double Commission, double SalesTarget, double AccelFactor, double SalesIncentive, double Increment) {
//assign instances of the variables
this.Salary = Salary;
this.Sales = Sales;
this.Commission = Commission;
this.AccelFactor = AccelFactor;
this.SalesIncentive = SalesIncentive;
this.Increment = Increment;
this.SalesTarget = SalesTarget;
this.TableSales = Sales * 0.5;
this.totalSales = TableSales + Sales;
this.newSales = newSales;
}
public void createTable() {
Calculations calc2; //create a new calculations instance
if (Sales < totalSales) { //while the sales are less than the TableSales then do this
for (double i = Sales; i < totalSales; i += 20000) { //for the Sales that are less than the TableSales, up the Sales by 20k and keep going until it reaches the limit of Sales *.5
newSales = i;
System.out.println("Total Sales Total Compensation\n");
calc2 = new Calculations(newSales, Salary, Commission, SalesTarget, AccelFactor, SalesIncentive, Increment);
calc2.calculatePay();
for (double j=Sales; j < totalSales; j += 20000) { //keep adding 20k to Sales and send it back to get a running total
System.out.println(newSales + " " + calc2.getTotalPay());
}
}
}
}
但仍然没有产出 我看到的问题之一是 在每次迭代中,您都要创建新的对象计算calc2 您需要执行以下操作:
Calculations calc2;//Place this here
for (double i = newSales; i < TableSales; i =+20000) {
calc2 = new Calculations(newSales, Salary, Commission, SalesTarget, AccelFactor, SalesIncentive, Increment);
calc2.calculatePay();
}
计算calc2//把这个放在这里
for(双i=新闻销售;i<表销售;i=+20000){
calc2=新计算(新销售额、工资、佣金、销售目标、加速因子、销售激励、增量);
calc2.calculatePay();
}
下一个问题
i=+20000//不正确//这等于i=20000
i+=20000//正确//这等于i=i+20000
我看到的问题之一是 在每次迭代中,您都要创建新的对象计算calc2 您需要执行以下操作:
Calculations calc2;//Place this here
for (double i = newSales; i < TableSales; i =+20000) {
calc2 = new Calculations(newSales, Salary, Commission, SalesTarget, AccelFactor, SalesIncentive, Increment);
calc2.calculatePay();
}
计算calc2//把这个放在这里
for(双i=新闻销售;i<表销售;i=+20000){
calc2=新计算(新销售额、工资、佣金、销售目标、加速因子、销售激励、增量);
calc2.calculatePay();
}
下一个问题
i=+20000//不正确//这等于i=20000
i+=20000//正确//这等于i=i+20000
我看到的问题之一是 在每次迭代中,您都要创建新的对象计算calc2 您需要执行以下操作:
Calculations calc2;//Place this here
for (double i = newSales; i < TableSales; i =+20000) {
calc2 = new Calculations(newSales, Salary, Commission, SalesTarget, AccelFactor, SalesIncentive, Increment);
calc2.calculatePay();
}
计算calc2//把这个放在这里
for(双i=新闻销售;i<表销售;i=+20000){
calc2=新计算(新销售额、工资、佣金、销售目标、加速因子、销售激励、增量);
calc2.calculatePay();
}
下一个问题
i=+20000//不正确//这等于i=20000
i+=20000//正确//这等于i=i+20000
我看到的问题之一是 在每次迭代中,您都要创建新的对象计算calc2 您需要执行以下操作:
Calculations calc2;//Place this here
for (double i = newSales; i < TableSales; i =+20000) {
calc2 = new Calculations(newSales, Salary, Commission, SalesTarget, AccelFactor, SalesIncentive, Increment);
calc2.calculatePay();
}
计算calc2//把这个放在这里
for(双i=新闻销售;i<表销售;i=+20000){
calc2=新计算(新销售额、工资、佣金、销售目标、加速因子、销售激励、增量);
calc2.calculatePay();
}
下一个问题
i=+20000//不正确//这等于i=20000
i+=20000//正确//这等于i=i+20000
实际上,您的代码有很多问题 1)您可以设置
TableSales=Sales*.5代码>初始化时。您没有将Sales
初始化为任何值,因此它将默认为0。因此,TableSales=0*.5
表示TableSales
始终为0,这表示while循环while(Sales
将始终为false
与第一次声明时设置TableSales
不同,您可以在构造函数中设置它,如下所示
public TableOutput(double Sales, double Salary, double Commission, double SalesTarget, double AccelFactor, double SalesIncentive, double Increment) {
this.Salary = Salary;
this.Sales = Sales; //corrected this line as well (although you pass the variable newSales in to your constructor, you named the variable Sales in your constructor)
this.Commission = Commission;
this.AccelFactor = AccelFactor;
this.SalesIncentive = SalesIncentive;
this.Increment = Increment;
this.SalesTarget = SalesTarget;
this.TableSales = Sales * 0.5;
}
for (double sales = 0; sales < TableSales; sales += 20000) {
Calculations calc2;
calc2 = new Calculations(sales, Salary, Commission, SalesTarget, AccelFactor, SalesIncentive, Increment);
calc2.calculatePay();
System.out.println(calc2.getTotalPay());
}
2)你的for
循环乱七八糟
首先,您不正确地增加了它。你说i=+20000代码>这仅仅是在循环的每次迭代中说i=20000。您希望i+=20000
,这将在每次迭代中向i
添加20000
另外,无论如何,您在for
循环中都不会使用i
。我相信您试图做的是在循环中每次将newSales
值增加20000,但您的代码当前所做的是每次将0传递给计算
构造函数,因为您总是传递newSales
变量,该变量始终为0,因为您从未给它赋值
我相信你正在努力完成的事情看起来更像这样
public TableOutput(double Sales, double Salary, double Commission, double SalesTarget, double AccelFactor, double SalesIncentive, double Increment) {
this.Salary = Salary;
this.Sales = Sales; //corrected this line as well (although you pass the variable newSales in to your constructor, you named the variable Sales in your constructor)
this.Commission = Commission;
this.AccelFactor = AccelFactor;
this.SalesIncentive = SalesIncentive;
this.Increment = Increment;
this.SalesTarget = SalesTarget;
this.TableSales = Sales * 0.5;
}
for (double sales = 0; sales < TableSales; sales += 20000) {
Calculations calc2;
calc2 = new Calculations(sales, Salary, Commission, SalesTarget, AccelFactor, SalesIncentive, Increment);
calc2.calculatePay();
System.out.println(calc2.getTotalPay());
}
因此Sales
将始终大于TableSales
,因此您的while循环将永远不会运行。您的代码实际上存在很多问题
1)您可以设置TableSales=Sales*.5代码>初始化时。您没有将Sales
初始化为任何值,因此它将默认为0。因此,TableSales=0*.5
表示TableSales
始终为0,这表示while循环while(Sales
将始终为false
与第一次声明时设置TableSales
不同,您可以在构造函数中设置它,如下所示
public TableOutput(double Sales, double Salary, double Commission, double SalesTarget, double AccelFactor, double SalesIncentive, double Increment) {
this.Salary = Salary;
this.Sales = Sales; //corrected this line as well (although you pass the variable newSales in to your constructor, you named the variable Sales in your constructor)
this.Commission = Commission;
this.AccelFactor = AccelFactor;
this.SalesIncentive = SalesIncentive;
this.Increment = Increment;
this.SalesTarget = SalesTarget;
this.TableSales = Sales * 0.5;
}
for (double sales = 0; sales < TableSales; sales += 20000) {
Calculations calc2;
calc2 = new Calculations(sales, Salary, Commission, SalesTarget, AccelFactor, SalesIncentive, Increment);
calc2.calculatePay();
System.out.println(calc2.getTotalPay());
}
2)你的for
循环乱七八糟
首先,您不正确地增加了它。你说i=+20000代码>这仅仅是在循环的每次迭代中说i=20000。您希望i+=20000
,这将在每次迭代中向i
添加20000
另外,无论如何,您在for
循环中都不会使用i
。我相信您试图做的是在循环中每次将newSales
值增加20000,但您的代码当前所做的是每次将0传递给计算
构造函数,因为您总是传递newSales
变量,该变量始终为0,因为您从未给它赋值
我相信你正在努力完成的事情看起来更像这样
public TableOutput(double Sales, double Salary, double Commission, double SalesTarget, double AccelFactor, double SalesIncentive, double Increment) {
this.Salary = Salary;
this.Sales = Sales; //corrected this line as well (although you pass the variable newSales in to your constructor, you named the variable Sales in your constructor)
this.Commission = Commission;
this.AccelFactor = AccelFactor;
this.SalesIncentive = SalesIncentive;
this.Increment = Increment;
this.SalesTarget = SalesTarget;
this.TableSales = Sales * 0.5;
}
for (double sales = 0; sales < TableSales; sales += 20000) {
Calculations calc2;
calc2 = new Calculations(sales, Salary, Commission, SalesTarget, AccelFactor, SalesIncentive, Increment);
calc2.calculatePay();
System.out.println(calc2.getTotalPay());
}
因此Sales
将始终大于TableSales
,因此您的while循环将永远不会运行。您的代码实际上存在很多问题
1)您可以设置TableSales=Sales*.5代码>初始化时。您没有将Sales
初始化为任何值,因此它将默认为0。因此,TableSales=0*.5
表示TableSales
始终为0,这表示while循环while(Sales
将始终为false
而不是在首次声明时设置TableSales