2014-02-28 5 views
0

이 프로그램은 텍스트 파일에서 값을 읽어 들이고이 모든 값의 합계를 얻습니다. 그런 다음 일련의 확인란과 텍스트 상자에서 수집 한 정보를 사용하여 최종 이익을 계산합니다.Visual Basic에서 이익 계산

코드가 지금 작성되었으므로 모든 확인란을 선택하면 이익이 올 바릅니다. 그러나 하나, 둘 또는 세 가지가 모두 선택되어 있으면 올바른 값을 입력해야합니다. 여기에 어떤 도움을 크게 감상 할 수

Imports System.IO 

Public Class Form1 

    Dim sum As Double 
    Dim fileRead As Boolean 
    Dim profit As Double 

    Private Sub menOpen_Click(sender As Object, e As EventArgs) Handles menOpen.Click 
     Dim ofd As New OpenFileDialog 
     ofd.Filter = "text files |*.txt|All Files|*.*" 
     ofd.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory) 

     If ofd.ShowDialog() = Windows.Forms.DialogResult.OK Then 
      Dim selectedFileName As String = System.IO.Path.GetFileName(ofd.FileName) 
      If selectedFileName.ToLower = "profit.txt" Then 
       Dim line As String 
       Using reader As New StreamReader(ofd.OpenFile) 
        While Not reader.EndOfStream 
         line = reader.ReadLine 
         Dim value As Integer 
         If Integer.TryParse(line, value) Then 
          sum = sum + value 
          fileRead = True 
         End If 
         Console.WriteLine(line) 
        End While 
       End Using 
      Else 
       MessageBox.Show("You cannot use that file!") 
      End If 
     End If 
    End Sub 

    Private Sub menExit_Click(sender As Object, e As EventArgs) Handles menExit.Click 
     Me.Close() 
    End Sub 

    Private Sub radSales_CheckedChanged(sender As Object, e As EventArgs) Handles radSales.CheckedChanged 
     If radSales.Checked Then 
      profit = sum 
     End If 
    End Sub 

    Private Sub radSandO_CheckedChanged(sender As Object, e As EventArgs) Handles radSandO.CheckedChanged 
     If radSandO.Checked Then 
      If Trim(txtWages.Text) = "" Then 
       txtWages.Text = CStr(0) 
      End If 
      profit = (sum - CDbl(txtWages.Text) - CDbl(txtRent.Text) - CDbl(txtUtilities.Text)) 
     End If 

    End Sub 


    Private Sub menComputeProfit_Click(sender As Object, e As EventArgs) Handles menComputeProfit.Click 
     If fileRead = False Then 
      MessageBox.Show("The file profit.txt has not been read in yet, the profit will be set to zero.") 
      sum = 0 
     End If 

     If chkWages.Checked Then 
      profit = CDbl(("$" & Val(sum) - (Val(txtWages.Text) + Val(txtRent.Text) + Val(txtUtilities.Text)))) 
     End If 
     If chkRent.Checked Then 
      profit = CDbl(("$" & Val(sum) - (Val(txtRent.Text) + Val(txtWages.Text) + Val(txtUtilities.Text)))) 
     End If 
     If chkUtilities.Checked Then 
      profit = CDbl(("$" & Val(sum) - (Val(txtUtilities.Text) + Val(txtWages.Text) + Val(txtRent.Text)))) 
     End If 

     txtAnswer.Text = profit.ToString 

    End Sub 
End Class 

에 엄격한 현재 코드 옵션입니다.

+0

텍스트 상자에 숫자와 소수점 만 포함되어 있는지 확인하십시오 . – Mych

+0

VB.NET에서 이익을 계산할 때 Micro $ oft의 쐐기를 제거하는 것을 기억하십시오! – Paul

+0

귀하의 이익 할당이 약간 잘못되었다고 생각합니다. 텍스트 상자에 할당 된 경우 믹스에서 "$"를 제거하고 문자열 앞에 붙여보십시오. – Paul

답변

0

텍스트 입력 중 하나가 비어있을 가능성이 큽니다 (오류 상태). 비어 있지 않더라도 유효하지 않은 Double 값일 수 있습니다. 문자열이 더블로 변환 될 수 있으면 위하여

안전하게이 같은 Double.TryParse을 사용할 수 있습니다, 확인 : 당신이 두배로 문자열을 변환하기 전에

If Double.TryParse(value, number) Then 
    Console.WriteLine("'{0}' --> {1}", value, number) 
Else 
    Console.WriteLine("Unable to parse '{0}'.", value)  
End If  
+0

감사합니다. 오류가 모두 곧 수정되었습니다. 하지만 여전히 txtAnswer 텍스트 상자에 수익을 표시하는 프로그램을 가져올 수 없습니다. 어떤 제안? –

+0

정확히 무엇을 경험하고 있습니까? 오류 메시지가 표시되거나 예외가 발생 했습니까? –

0

는 문자열이 비어 있지 않은지 확인합니다. 이것은 오류가 말하는 것입니다. 이후 상자의 문자열이 실제로 숫자인지 확인해야합니다. 당신은 txtAnswer

Private Sub txtAnswer_TextChanged(sender As Object, e As EventArgs) Handles txtAnswer.TextChanged 
    txtAnswer.Text = CStr(profit) 
End Sub 

에 대한의 TextChanged 이벤트를 사용하는

+0

감사합니다. 오류가 모두 곧 수정되었습니다. 하지만 여전히 txtAnswer 텍스트 상자에 수익을 표시하는 프로그램을 가져올 수 없습니다. 어떤 제안? –

0

그래서 위의 코드는 그 자체가 변화 할 때마다 발생하는 것입니다! 그냥 TXT에 팝업 이익은 이익이 변경 될 때마다이 작업을 수행해야합니다 ...이

If chkWages.Checked Then 
     profit = CDbl(("$" & Val(sum) - Val(txtWages.Text))) 
     txtAnswer.text = profit 
    End If 
    If chkRent.Checked Then 
     profit = CDbl(("$" & Val(sum) - Val(txtRent.Text))) 
     txtAnswer.text = profit 
    End If 
    If chkUtilities.Checked Then 
     profit = CDbl(("$" & Val(sum) - Val(txtUtilities.Text))) 
     txtAnswer.text = profit 
    End If 

약간 어수선한하지만 그것을 어떻게해야 계산 될 때마다 답변. 그리고 TextChanged 이벤트를 제거하십시오. CLARITY

에 대한

업데이트] 답변 확인 나는 그것이 문자와 "$"가 아닌 통화로 처리 수로 CDbl(("$" & Val(Sum) - Val(txtWages.Text)))이 어떤 작업을 수행하는지 확실하지 않다 그래서 통화 기호를 추가하지 않습니다. "$"를 없애고 값을 추가하십시오. 계산이 완료되면 $를 붙이려면 다음과 같이하십시오. txtAnswer = $ & profit.toString

+0

나는 txtAnswer를 다루는 하위 기사와 함께 떠나 갔다. 나는 나의 현재 문제점, 어떤 제안으로 포스트를 새롭게 했는가? –

+0

그래서 txtAnswer를 어디에서 업데이트하고 있습니까? 코드에서 값을 바꿀만한 부분이 보이지 않습니다. 마지막으로 추가 한 코드를 확인하십시오 txtAnswer.text = profit – Mych

+0

죄송합니다. 정말 피곤하고 업데이트하지 않았다는 것을 잊어 버렸습니다. 내가 그걸로 작업해온 이래로 코드. 나는 가장 최근의 코드와 내가 가지고있는 이슈를 반영하기 위해 포스트를 편집했다. –