2012-07-18 17 views
0

我正在製作一個解決二年級方程的程序(例如2x²+ 2x + 2),我試圖讓用戶在一個文本框中輸入整個方程。然後,計算機將已輸入的內容存儲到字符串中的文本框中,然後解析該字符串以查找係數。對於像2x²+ 2x + 2這樣的等式,係數是2,2和2,它們存儲在位置0,4和7的字符串中。最大的問題是,如果它是一個更大的方程如32x2 + 32x + 45或123x²+ 45x + 6?在這種情況下,我的邏輯將不起作用。有誰知道該怎麼做?製作一個適應其內部文本的字符串

這裏是我的代碼,只適用於小的公式:

Public Class Form1 
    Dim i1 As Double 
    Dim i2 As Double 
    Dim i3 As Double 
    Dim delta As Double 
    Dim x1 As Double 
    Dim x2 As Double 
    Dim leters As String 

    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click 
     i1 = T1.Text 
     i2 = T2.Text 
     i3 = T3.Text 
     delta = (i2 * i2) - 4 * (i1 * i3) 
     If (delta < 0) Then 
      Ld.Text = delta 
      L1.Text = "Impossível" 
      L2.Text = "Impossível" 
     Else 
      x1 = (-i2 + Math.Sqrt(delta))/(2 * i1) 
      x2 = (-i2 - Math.Sqrt(delta))/(2 * i1) 
      Ld.Text = delta 
      L1.Text = x1 
      L2.Text = x2 
     End If 
    End Sub 

    Private Sub RadioButton1_CheckedChanged(sender As System.Object, e As System.EventArgs) Handles RadioButton1.CheckedChanged 
     GroupBox1.Text = "Equação" 
     GroupBox1.Width = 200 
     GroupBox1.Height = 58 
     T1.Width = 188 
     T3.Hide() 
     T2.Hide() 
     Label1.Hide() 
     Button1.Hide() 
     Button2.Show() 
    End Sub 

    Private Sub RadioButton2_CheckedChanged(sender As System.Object, e As System.EventArgs) Handles RadioButton2.CheckedChanged 
     GroupBox1.Text = "Coeficientes" 
     GroupBox1.Width = 200 
     GroupBox1.Height = 143 
     T1.Width = 119 
     T3.Show() 
     T2.Show() 
     Label1.Show() 
     Button1.Show() 
     Button2.Hide() 
    End Sub 

    Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click 
     leters = T1.Text 
     leters.ToString() 
    End Sub  
End Class 

回答

1

你可以使用正則表達式來解析字符串,這將是不錯的,因爲你可以改變正則表達式表達的設置,而無需重建程序集。然而,如果公式字符串格式總是相同的,就像這裏的情況一樣(因爲如果不是這樣的話,其餘的代碼將會失敗),那麼你可以簡單地使用String.Split來解析字符串。例如:

Dim equation As String = "32x²+32x+45" 
Dim parts() As String = equation.Split(New Char() {"+"c, "x"c}, StringSplitOptions.RemoveEmptyEntries) 
Dim coefficient1 As Integer = Integer.Parse(parts(0)) 
Dim coefficient2 As Integer = Integer.Parse(parts(2)) 
Dim coefficient3 As Integer = Integer.Parse(parts(3)) 
相關問題