- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试将变量传递给函数,让它循环遍历 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());
}
}
}
}
我想要做的是将销售额增加 20k,并使其增加 20k,同时将新的销售额传递回calculatePay 函数。我在这里缺少什么?这不应该是这样做的吗?
for (double i = newSales; i < TableSales; i =+20000) {
Calculations calc2;
calc2 = new Calculations(newSales, Salary, Commission, SalesTarget, AccelFactor, SalesIncentive, Increment);
calc2.calculatePay();
在我的主函数中,我以这种方式调用此类以获取输出:
TableOutput Table1 = new TableOutput(Sales, Salary, Commission, SalesTarget, AccelFactor, SalesIncentive, Increment);
Table1.createTable();
但仍然没有输出。
最佳答案
您的代码实际上存在很多问题。
1) 您设置 TableSales = Sales * .5;
初始化时。您没有初始化Sales
任何值,因此默认为 0。因此,TableSales = 0 *.5;
这意味着TableSales
始终为 0,这意味着您的 while 循环 while (Sales < TableSales)
永远都是假的。
而不是设置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;
}
2) 您的for
循环是各种困惑。
一方面,您不正确地增加了它。你说i = +20000;
这只是在循环的每次迭代中表示 i = 20000 。您想要i += 20000
,这会将 20000 添加到 i
在每次迭代中。
此外,您从未使用 i
在你的for
无论如何循环。我相信您要做的就是增加 newSales
每次循环时值都会增加 20000,但您的代码当前所做的是将 0 传递给 Calculations
每次构造函数,因为你总是传入 newSales
变量,它始终为 0,因为您从未为其赋值。
我相信您想要完成的事情看起来更像是这样。
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());
}
OP代码更新后编辑:
您的while (Sales < TableSales)
循环仍然不会运行。
这是因为两件事:
首先,是因为您为 Sales
传入 0当您调用 TableOutput
的构造函数时类,所以TableSales
和Sales
两者都将为 0。您需要以非零数字开始销售。
其次,无论如何你都需要重新思考你的逻辑。当您创建 TableOutput
例如,您正在设置 TableSales
一半 Sales
是。所以:
If Sales = 10000, then TableSales = 5000
If Sales = 30000, then TableSales = 15000
...
所以Sales
永远大于 TableSales
所以你的 while 循环永远不会运行。
关于Java FOR 循环递增并将新变量传递给方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31933113/
这个问题在这里已经有了答案: 关闭 10 年前。 Possible Duplicate: How to nest OR statements in JavaScript? 有没有办法做到这一点:
在 JavaScript 中有没有办法让一个变量总是等于一个变量?喜欢var1 = var2但是当var2更新,也是var1 . 例子 var var1 = document.getElementBy
我正在努力理解这代表什么 var1 = var2 == var3 我的猜测是这等同于: if (var2 == var3): var1 = var2 最佳答案 赋值 var1 = var2
这个问题已经有答案了: What does the PHP error message "Notice: Use of undefined constant" mean? (2 个回答) 已关闭 8
我在临时表中有几条记录,我想从每条记录中获取一个值并将其添加到一个变量中,例如 color | caption -------------------------------- re
如何将字符串转为变量(字符串变量--> $variable)? 或者用逗号分隔的变量列表然后转换为实际变量。 我有 2 个文件: 列名文件 行文件 我需要根据字符串匹配行文件中的整行,并根据列名文件命
我有一个我无法解决的基本 php 问题,我也想了解为什么! $upperValueCB = 10; $passNodeMatrixSource = 'CB'; $topValue= '$uppe
这可能吗? php $variable = $variable1 || $variable2? 如果 $variable1 为空则使用 $variable2 是否存在类似的东西? 最佳答案 PHP 5
在 Perl 5.20 中,for 循环似乎能够修改模块作用域的变量,但不能修改父作用域中的词法变量。 #!/usr/bin/env perl use strict; use warnings; ou
为什么这不起作用: var variable; variable = variable.concat(variable2); $('#lunk').append(variable) 我无法弄清楚这一点
根据我的理解,在32位机器上,指针的sizeof是32位(4字节),而在64位机器上,它是8字节。无论它们指向什么数据类型,它们都有固定的大小。我的计算机在 64 位上运行,但是当我打印包含 * 的大
例如: int a = 10; a += 1.5; 这运行得很完美,但是 a = a+1.5; 此作业表示类型不匹配:无法从 double 转换为 int。所以我的问题是:+= 运算符 和= 运算符
您好,我写了这个 MySQL 存储过程,但我一直收到这个语法错误 #1064 - You have an error in your SQL syntax; check the manual that
我试图在我的场景中显示特定的奖牌,这取决于你的高分是基于关卡的目标。 // Get Medal Colour if levelHighscore goalScore { sc
我必须维护相当古老的 Visual C++ 源代码的大型代码库。我发现代码如下: bIsOk = !!m_ptr->isOpen(some Parameters) bIsOk的数据类型是bool,is
我有一个从 MySQL 数据库中提取的动态产品列表。在 list 上有一个立即联系 按钮,我正在使用一个 jquery Modal 脚本,它会弹出一个表单。 我的问题是尝试将产品信息变量传递给该弹出窗
这个问题在这里已经有了答案: 关闭 10 年前。 Possible Duplicate: What is the difference between (type)value and type(va
jQuery Core Style Guidelines建议两种不同的方法来检查变量是否已定义。 全局变量:typeof variable === "undefined" 局部变量:variable
这个问题已经有答案了: 已关闭11 年前。 Possible Duplicate: “Variable” Variables in Javascript? 我想肯定有一种方法可以在 JavaScrip
在语句中使用多重赋值有什么优点或缺点吗?在简单的例子中 var1 = var2 = true; 赋值是从右到左的(我相信 C# 中的所有赋值都是如此,而且可能是 Java,尽管我没有检查后者)。但是,
我是一名优秀的程序员,十分优秀!