2017-06-18 86 views
0

我不斷收到一條錯誤消息,指出我無法將字符串轉換爲參考第39行的double。是否有人可以查看代碼並讓我知道我在哪裏?我覺得第25行應該爲變量「R」列出兩倍。在C#中轉換問題#

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Windows.Forms; 

namespace Present_Value 
{ 
    public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 
     } 

     //Declare global variables. 
     /* double F = int.Parse(futureTextBox.Text); 
     double R = int.Parse(interestTextBox.Text); 
     double N = int.Parse(sitTextBox.Text);*/ 

     private double CalculateData(int F, int R, int N) 
     { 
      double P = F/(1 + R)*N; 
      return P ; 

     } 



     private void button1_Click(object sender, EventArgs e) 
     { 

      int n = int.Parse(sitTextBox.Text); 
      int f = int.Parse(futureTextBox.Text); 
      int r = double.Parse(intTextBox.Text); 

      presentValuelabel.Text = CalculateData(f,r,n).ToString(); 
     } 

     private void Form1_Load(object sender, EventArgs e) 
     { 

     } 

     private void exitButton_Click(object sender, EventArgs e) 
     { 
      //Close this form. 
       this.Close(); 
     } 
    } 
} 
+0

你聲明'int'變量,但嘗試指派'和'double.Parse()'方法double'。嘗試將'double.Parse()'改爲'int.Parse()'。 – Stradivarius

+0

哪一行是39行25行?你應該發佈[mcve]並讓我們輕鬆回答。 – Enigmativity

+0

請記住,計算'F /(1 + R)* N'(就像它在您的問題中所述)純粹是用整數數學計算的。因此,例如,的'的結果(1 /(1 + 2)* 3)''是使用0'整數運算。但是,如果我更改爲雙打然後'(1.0 /(1.0 + 2.0)* 3.0)''給出1.0'。 – Enigmativity

回答

1

有兩種編輯方式。

方法1)你應該修改CalculateData功能。 int R =>double R

private double CalculateData(int F, double R, int N) 
{ 
    double P = F/(1 + R) * N; 
    return P; 

} 
private void button1_Click(object sender, EventArgs e) 
    { 

     int n = int.Parse(sitTextBox.Text); 
     int f = int.Parse(futureTextBox.Text); 
     double r = double.Parse(intTextBox.Text); 

     presentValuelabel.Text = CalculateData(f, r, n).ToString(); 
    } 

方法2)你應該修改的button1_Click功能。 double.Parse(intTextBox.Text) =>int.Parse(intTextBox.Text)

private void button1_Click(object sender, EventArgs e) 
{ 

    int n = int.Parse(sitTextBox.Text); 
    int f = int.Parse(futureTextBox.Text); 
    int r = int.Parse(intTextBox.Text); 

    presentValuelabel.Text = CalculateData(f, r, n).ToString(); 
} 

我希望這會幫助你。

+0

絕對奏效! –

0

當處理用戶輸入(來自文本框)時,應該使用.TryParse()方法而不是.Parse()。我們不能相信用戶...

另外,如果您的輸入可能是一個實數,那麼文化是一個ISSE,例如3.4或3,4。