【问题标题】:Decision tree true or false operators vb.net决策树真假运算符 vb.net
【发布时间】:2014-11-07 22:19:45
【问题描述】:

我想知道是否有人可以帮助处理决策树逻辑。目前它似乎通过了所有真正的错误陈述,并被最后一个 else 陈述所困。了解逻辑故障在哪里对我的学习有好处。

干杯, B.

Partial Class _Default
Inherits System.Web.UI.Page

Protected Sub Button1_Click(ByVal sender As Object, _
    ByVal e As System.EventArgs)

      Dim Name As Boolean = False
      Dim fileUp As Boolean = False
      Dim fileSize As Boolean = False
      Dim fileCheck As Boolean = False
      Dim FileOK As Boolean = False
      Dim fileTypeCheck As String = String.Empty
      Dim fileSizeCheck As Integer

      If TextBox1.Text = String.Empty Then
                     Name = False
      Else 
                     Name = True
      End If

      If FileUploadControl.HasFile Then
                     fileUp = True
      End If

      fileSizeCheck = FileUploadControl.PostedFile.ContentLength
      If fileSizeCheck < 56320 Then
                     fileSize = True
      End If

      fileTypeCheck = FileUploadControl.PostedFile.ContentType
      If fileTypeCheck = "text/plain" Then
                     fileCheck = True
      End If

      If Name = false
                     StatusLabel.Text = "Update Status: Please Enter Your Name Logon"

      ElseIf Name = True And fileUp = False
                     StatusLabel.Text = "Update Status: Please Enter List to be uploaded"

      ElseIf Name = False And fileUp = False
                     StatusLabel.Text = "Update Status: Update Status: Please Enter Your Name and List to be uploaded"

      ElseIf Name = True And fileUp = True And fileSize = False
                     StatusLabel.Text = "Update Status: Only text files under 55kb can be accepted"

      ElseIf Name = True And fileUp = True And fileSize = True And fileCheck = False
                     StatusLabel.Text = "Upload status: Cannot Accept File. Only text files are accepted"

      ElseIf Name = True And fileUp = True And fileSize = True And fileCheck = True
      fileOk = True
      End IF


      If fileOK Then
           Try        
                Dim objFSO, objFolder
                objFSO = CreateObject("Scripting.FileSystemObject")
                objFolder = "D:\PSTMailBoxReports\uploads\" & TextBox1.Text & "-" & DateTime.Now.ToString("yyyyMMdd-HHmmss-fff")
                If objFSO.FolderExists(objFolder) = True Then
                    StatusLabel.Text = "Upload status: folder exists"
                ElseIf objFSO.FolderExists(objFolder) <> True Then
                    objFSO.CreateFolder(objFolder)
                    System.IO.Directory.SetCurrentDirectory(objFolder.ToString)
                    StatusLabel.Text = "Upload status: Entering New Upload folder please wait"
                    StatusLabel.Text = "Upload status: Creating Upload folder " & objFolder & ", Please now wait"
                    Dim physicalFolder = System.IO.Directory.GetCurrentDirectory().ToString
                    Dim fileName As String = Guid.NewGuid().ToString
                    Dim extension As String = System.IO.Path.GetExtension(FileUploadControl.FileName)
                    FileUploadControl.PostedFile.SaveAs(System.IO.Path.Combine(physicalFolder, fileName + extension))
                    StatusLabel.Text = "Upload status: File uploaded!"
                End If

            Catch ex As Exception

            End Try
        Else
            StatusLabel.Text = "Upload status: Error Please Retry "
        End If
    'End If
End Sub

结束类

【问题讨论】:

  • 给我们一个样本输入和一个样本输出。你必须对你的 if 语句进行逻辑排序。
  • 帮自己一个忙,放弃 FileSystemObject。请改用 System.IO 中的内置 .Net 类。它们的速度要快得多,如果要在 Web 服务器上运行此代码,请注意,出于安全原因,脚本对象很多时候都没有安装。

标签: vb.net


【解决方案1】:

这是一个提示,不是完整的解决方案,因为您没有显示输入示例。

您需要确保处理所有情况(请参阅下面的可能值。给定 4 个二进制变量,您会得到 2x2x2x2 情况。您可以使用此表构建正确的 IF/ELSE 结构。

Name    FileUp  FileSize FileCheck
FALSE   FALSE   FALSE    FALSE
FALSE   FALSE   FALSE    TRUE
FALSE   FALSE   TRUE     FALSE
FALSE   FALSE   TRUE     TRUE
FALSE   TRUE    FALSE    FALSE
FALSE   TRUE    FALSE    TRUE
FALSE   TRUE    TRUE     FALSE
FALSE   TRUE    TRUE     TRUE
TRUE    FALSE   FALSE    FALSE
TRUE    FALSE   FALSE    TRUE
TRUE    FALSE   TRUE     FALSE
TRUE    FALSE   TRUE     TRUE
TRUE    TRUE    FALSE    FALSE
TRUE    TRUE    FALSE    TRUE
TRUE    TRUE    TRUE     FALSE
TRUE    TRUE    TRUE     TRUE

在您的代码中,您首先要进行测试:

IF Name=False

然后经过几次测试,您可以:

ElseIf Name = False And fileUp = False

最后一个测试在 (name=false) 时永远不会执行,因为在第一个 if 中执行的操作将首先执行,并且 if 将终止。

也就是说,以上两行并不互斥。

因此在使用 ELSEIF 时需要小心,以便每个测试与其他测试互斥。

我还建议您使用调试来查看条件是如何测试的。

【讨论】:

  • 我会尽快尝试建议的逻辑。它是从前端网页上传一个文本文件。我正在尝试在保存文件之前添加条件逻辑来执行检查。
猜你喜欢
  • 2011-05-06
  • 2018-12-12
  • 2018-12-20
  • 2023-03-20
  • 2010-10-15
  • 2016-05-11
  • 2016-02-23
  • 2021-11-14
  • 2014-12-15
相关资源
最近更新 更多