2017-01-15 11 views
0

私はReadLinesを使用してテキストファイルの2行から読み込んだ後、コンマで分割して計算に使用する基本的な税計算機を作っています。私はファイルを読み込み、分割することはできますが、分割データを実際に参照して計算に使用することは、私が望むようには機能しません。 テキストファイルは次のようなものです:C# - テキストファイルの行番号を分割して使用する

500, 600, 700, 800, 900 
0.1, 0.2, 0.3, 0.4, 0.5 

そして、これはこれまでのところ私のコードです:

private void btnCalculateEmployeeTax_Click(object sender, EventArgs e) 
    { 
     string[] rates = File.ReadLines(@"E:\\path.txt").ToArray(); 

     string str1 = rates[0], str2 = rates[1]; 

     string[] income = str1.Split(','); 
     string[] tax = str2.Split(','); 

     int wages = 40*int.Parse(txtHourlyRate.Text); 

     if (wages < income[0]) 
      { 
      MessageBox.Show("Less than 500"); 
      MessageBox.Show ("Total tax is $" + (wages*tax[0])); 

     } 
     else 
     { 
      MessageBox.Show("More than 500"); 
     } 

は明らかにそれがエラーを蹴っている場合/ else文の中のコードだ - これはただ与えますあなたは私がどのように数字を使用したいのか考えています。テキストファイルの各番号をローカル変数に割り当てる方法はありますか?それとも、私がここで何をしようとしているのかを回避する方法がありますか?

ルーキーの質問には事前にお詫び申し上げます。

+0

「計算がうまくいかない」とはどういう意味ですか?何が間違っていて、何が正しいのかを説明してください。 – Enigmativity

+0

http://stackoverflow.com/questions/2959161/convert-string-to-int-array-using-linqには、あなたの分割のためのコピー・ペースト・レディ・コードがあります。 –

答えて

0

まず、あなたがstring

if (wages < int.Parse(income[0])) 
{ 
    MessageBox.Show("Less than 500"); 
    MessageBox.Show ("Total tax is $" + (wages*tax[0])); <- the same problem will be here 
} 

intへのCONVERする必要があります。しかし、私はあなたがに文字列に配列を変換することができます代わりに string

+0

ありがとうございます。収入はParseと一緒に働いていますが、 '(賃金* int.Parse(tax [0]))' は機能していないようですが、収入と同じように処理されています...? – Onejo578

+0

@ Onejo578 OK、この方法を試してみることをお勧めします。https://dotnetfiddle.net/yxG3Xwをご覧ください。ありがとう – Marusyk

+0

それはひどいです!あなたのお時間をありがとう。 – Onejo578

1

doubleの配列を作成する方がよいだろうと思い、これを修正したい場合intの配列 これは次のようにすることができます

var result = income.Select(int.Parse).ToArray(); 
+0

良い。私は「Double.Parse」があるべきだと思う。 – Marusyk

+0

通貨データ型ではdoubleの代わりにdecimalを使用する必要があります。これにより、バイナリとデニールの小数間の変換における特定のエラーが回避されます。 double.Parse()よりdecimal.Parse()を推奨します。 – Grimley

関連する問題