-1

所以我有 3 个文本字段(A、B、C),用户只能在其中输入数字,因为键盘是数字键盘。

如果用户尝试在每个框中输入超过 100 个,我有一个检查(这里的用户为我整理)会引发错误。

我需要一种方法来查看在文本字段中输入的数字,然后查看 3 的总数,然后相应地调整其他数字。

例如,我输入了以下内容:

示例 1 A = 50 我希望 B 填写剩余的 50

示例 2 A =40 B=50 C=10

然后我将A更改为60。现在总数为120。我希望它看看B,然后拿走20,所以我有以下。A=60 B=30 C=10

我见过这样的场景,用户有 2 个文本字段,他想要总计 100 个,但我没有看到要求 3 个的线程。

谢谢

4

1 回答 1

1

假设您有三个字段。这是伪代码。将此委托功能附加到所有 3 个文本区域。

// Take 3 fields
FieldA, FieldB, FieldC

// Total target to reach
TotalTarget = 100

// The total we currently have
total = FieldA + FieldB + FieldC

// Work out how much we are under by. 
// If positive, we are under. If negative, we are over.
underBy = TotalTarget - total

// Now two variables for the 'other two' fields.
if sender == FieldA:
  other1 = FieldB, other2 = FieldC
if sender == FieldB:
  other1 = FieldA, other2 = FieldC
if sender == FieldC:
  other1 = FieldA, other2 = FieldB

// Split the difference and assign to other 2 fields so they are raised or lowered the same amount.
// If under, add, if over, subtract.
other1 = other1 + overBy / 2
other2 = other2 + overBy / 2        

// This will add 1 or 0 to other2 (i.e. compensate for round-down)
other2 = other2 + overBy % 2;

如果您使用整数除法,那么您将遇到舍入问题。提示:如果它很奇怪,您可以在其中一个字段中添加一个。

确保编写测试。我没有尝试过任何这些,但它应该可以工作。

于 2012-12-23T20:09:24.093 回答