Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java FOR循环递增并将新变量传递给方法_Java_Loops_For Loop_While Loop - Fatal编程技术网

Java 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

我试图将变量传递给函数,让它通过for循环进行循环,并将新变量传递给现有函数。例如,我原来的类是这样的

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