注意:这是一个一般性的编程问题,不特定于任何语言,但您可以在回答中随意使用您选择的语言来解释逻辑。
我想要一种方法来获取一串文本,比如 "Default(0-100)=20"
然后从中提取默认小时工资为 20 小时 0 到100. 这可以用来表示“Default(101-245)=25”,即 101 到 245 小时的默认小时工资为 25。还允许它定义“Brian(0-29)=15”,即用户“Brian”在 0 到 29 小时的非默认小时工资为 15。
我的第一印象是通过正则表达式来运行字符串,比如 ^(\w*)\((\d*)-(\d*)\)$
拾取文本和范围的较小和较高端。
存储此信息以便日后使用的最佳方式是什么?多维数组?哈希?
一旦您存储了信息,实际使用这些信息的最佳方式是什么?
如果假设我们使用 "Default(0-100)=20"
和 "Default(101-245)=25"
,工作时数为 150。
最佳答案
我不是很有经验,但我试着自己回答一下,也许它可以帮助你。
对于问题的第一部分,对于像该 id 这样的字符串,只需在适当的位置拆分给定的字符串即可。大多数框架都有类来执行此操作。例如,在您的情况下是 ( ) - 和 =
结果:
默认, (, 0, -, 100, ) , =, 20
- 默认
- (
- 0
- -
- 100
- )
- =
- 20
当你使用一致的字符串格式时,你的值总是在同一个索引处。选择它们,根据需要进行转换并存储在变量中;
假设你在谈论面向对象的编程,我会在你的情况下做这样的事情:
创建一个类employee,将name和hourly-wages作为实例变量。这个类还有一个方法 calculateWageForHours(int hours)。小时工资可以存储在字典或类似的东西中 - 取决于您的框架。您将开始时间作为字典的关键字,并将投注率作为值。您不需要结束时间,因为一个费率在到达下一个“阶段”之前一直存在。
工资的计算方法大概是这样的:(具体情况肯定有更好的方法)
calculateWageForHours(int hours) {
for (int i = 0, i < dict.count - 1, i++) {
if (hours < dict[i + 1].key /* the int-value for the hour */ -1) {
float wage;
for (int j = 0, j < i, j++) {
wage += (dict[j + 1].key - 1) * dict[j].value;
}
wage += (hours - dict[i].key - 1) * dict[i].value;
return wage;
}
return calculateWageForHours(dict.lastkey - 1)
+ (hours - dict.lastkey) * dict.lastkey.value;
默认部分可以设置在您实例化员工类的程序中的任何位置。只需编写一个为员工创建默认字典的方法。 (也可以在对象初始化中完成,然后从 Controller 类中提交必要的参数)
关于algorithm - 通用编程逻辑 : Defining Hourly Wage Ranges,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3221414/