2014-02-05 2 views
0

допустим у меня есть последовательность алфавита, A, A, B, C, B, D, DПроверка повторяющихся значений в укусе и добавить дополнительное штрафное время

Каждый алфавит повторив работника, с время, данное им для выполнения задачи.

  • А - 3.5hours
  • Б - 5hours
  • С - 2 часа
  • D - 2.2hours

Каждый раз, когда я должен сложить общее время, которое у меня нет проблемы делать это.

А, А, В, С, В, D, D = 3,5 + 3,5 + 5 + 2 + 5 + 2,2 + 2,2

Однако проблема я столкнулся сейчас Если один работник выполняет другую задачу немедленно, я должен добавить дополнительные 3,5 часа штрафа. Давайте скажем A, A. это означает, что Работник А должен выполнить следующую задачу непосредственно без какого-либо отдыха. таким образом, штраф должен быть добавлен, повторяется одно и то же значение. Я пытаюсь поставить A в качестве своего первого значения, а затем сравнить с моим следующим значением. после этого замените его на следующее значение и продолжите проверку до конца. Я попытался написать некоторые коды, но, похоже, он бесконечно зацикливается.

'display all my random values as string 
Dim RandomString = String.Join((","), RandomEmployee.ToArray()) 

' Check for dups 
       Dim First As String 
       Dim Second As String 

       First = InStr(RandomString, (",")) 
       While First <> "" 
        If First = Second Then 
         Dim penalty As Integer = 3.5 
         RandomTimeTaken.Add(penalty) 
        Else 
         Second = First 
        End If 

       End While 

LblRandom1.Text = RandomString 

RandomEmployee - это массив, в котором хранится весь мой сотрудник. Любая помощь будет оценена.

+0

Что вы подразумеваете под этим утверждением? ** Если один работник выполняет другую задачу сразу ** "? –

+0

@MarkHall это как A, A. он повторяется. то есть рабочий А выполнил свою задачу, и он должен выполнить следующую задачу напрямую. – Crayon

+0

Вам нужно настроить переменную RandomString на каждую итерацию цикла. Я думаю, вы не учтете последний элемент в своем коде. Я его не тестировал. – Nizam

ответ

1

Вы должны извлечь First от RandomString каждой итерации петли. Но вместо этого вы можете решить свою проблему, используя вместо этого List.

Dim RandomString = String.Join((","), RandomEmployee.ToArray()) 
Dim ListEmp as List(Of String) = RandomEmployee.ToList() 

If ListEmp.Count > 1 then 
    For aux as integer = 0 to ListEmp.Count - 2 
     Dim First as String = ListEmp(aux) 
     Dim Second as String = ListEmp(aux+1) 
     If First = Second then 
      RandomTimeTaken.Add(3.5) 
     End If 
    Next 
End IF 
LblRandom1.Text = RandomString 
Смежные вопросы