2015-09-11 3 views
-1

У меня есть некоторая логика и условие, если условие не достигнуто. Я попробовал несколько вариантов if/ifelse/else для создания логики, которую хочу, но ничего не работает. Позвольте мне показать вам, в какой-то код ...VB.Net Вложенный Если

If(a is true) Then 
print("A is true") 

Else If(b is true) Then 
print("B is true") 

    if(c is true) Then 
    print("B and C are true") 

    else 'c is Not true 
    print("B is true, C is Not true) 

     if(d is true) Then 
     print("B and D are true") 

     else 'd is Not true 
     print("B is true, D is Not true") 

     End If 
    End If 
End If 

Что происходит, что мой

«Если (d верно)» и «другое«d не соответствует действительности»

условия не проверено. Та часть логики в настоящее время «перешагнул»

Ожидаемые результаты, когда А, В, С и D являются истинными:

«А истинно»

Ожидаемые результаты, когда B, C и D верны:

"в истинно"

"в и С являются истинными"

"B, C и D. правда"

Ожидаемый результат, когда B и C являются истинными, но D не является:

"В истинно"

"B и C являются True"

"B истинно, D не соответствует действительности"

ожидаемый результат, когда Б и Г верно:

«в истинно»

«Б правда, С не верно»

"B и D являются истинными"

То, что я в настоящее время видим:

B, C и D являются истинными:

"В истинно"

«B и C истинны»

Который выходит из„B и D являются истинными“

Надеемся, что эти результаты помогут вам унд erstand!

+1

Следуйте вашей логике. C будет проверяться только когда B истинно. Аналогично, D будет только когда-либо проверяться, если B истинно, а C неверно. Какую продукцию вы ищете именно? Я думаю, в этом случае было бы лучше проверить каждый из A, B, C и D отдельно и объединить строку вместе. – RianBattle

+0

Спасибо, что указали это.Я пошел вперед и отредактировал, чтобы включить мой желаемый/ожидаемый результат. Мне нравится ваше предложение, но я хочу проверить только C и D, если B истинно первым. И если А истинно, мне все равно. Извините, что оригинал был путаным. Надеюсь, это имеет смысл сейчас. – Christopher

+0

Тот факт, что некоторые из этих утверждений повторяются, прекрасен. В конце я использую некоторую логику, которая фиксирует окончательное выражение и помещает его в таблицу и игнорирует предыдущие выражения. – Christopher

ответ

1

Я не уверен, что такое a, b, c или d, но вот что я думаю, что вы пытаетесь сделать. Вам просто нужно изменить строку только в том случае, если «d» является либо истинным, либо ложным на основе вашего «варианта использования». Если вы хотите увеличить степень детализации, я бы предложил построитель строк, как упоминалось ранее. Во всяком случае, вот код, который я использовал для создания вашего «случая». Чтобы быть ясным, «c» и «d» никогда не проверяются, если «b» является ложным. Я основывал это на вашем заявлении о «использовании».

Private Sub Test() 
      Dim a = True 
      Dim b = False 
      Dim c = True 
      Dim d = True 

      Dim printout As String = "" 
      If a Then 
       printout = "a is true" 
      Else 
       If b Then 
        If c Then 
         printout = "b and c are true" 
        else 
         printout="b is true and c is not true" 

        End If 
        If d and c Then 
         printout = "b and c and d are true" 

        elseif d=true and c=false then 

         printout = "b and d are true , c is not true" 
        elseif c=true and d=false then 
        printout = "b and c is true ,d is not true" 
        else 
        printout = "b is true ,c and d are not true"    


        End If 
       End If 
      End If 
      Console.WriteLine(printout) 

     End Sub 
+0

Извините, я должен был прояснить, что a, b, c и d - все логические функции, которые возвращают true или false, при условии параметра «x». Прошу прощения. Ваш код выглядит неплохо, но мне нужен оператор печати «» B истинно, C не является истинным ». Другими словами, мне действительно нужно иметь инструкцию else после« If c Then » – Christopher

+0

Сделано редактирование, опять же это не оптимально, но выполняет то, что вы просили –

Смежные вопросы