我想知道是否有人可以帮助决策树逻辑。目前它似乎传递了所有真正的错误陈述,并被最后的其他陈述所困。我的学习能够理解逻辑中的失败在哪里。
干杯, 乙
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
结束班
答案 0 :(得分:0)
这是一个提示并非完整的解决方案,因为您没有显示输入样本。
您需要确保所有案例都得到处理(请参阅下面的可能值。给定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,以便每个测试与其他测试相互兼容。
我还建议您使用调试来查看条件的测试方式。