2017-01-07 15 views
1

以下の画像のようにコンソールアプリケーションを作成する必要があります。 Console Application入力文字列で通貨記号を許可する方法C#

問題は、$で時間単価を入力すると、System.FormatExceptionエラーが発生することです。また、入力文字列が正しい形式でないとも言います。あなたは、C#で文字列リテラルを表すための構文@"..."を使用することができます

ここでここでの問題

 double rate = 0; 
     Console.Write("Enter the hourly rate: "); 
     rate = double.Parse(Console.ReadLine()); 

を引き起こし、コードのスニペットは、プログラム全体です

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 

namespace ICA2_Mason_Clarke 
{ 
    class Program 
    { 

     static void Main(string[] args) 
     { 
      int hoursWorked = 0; 
      Console.Write("Enter the hours worked: "); 
      hoursWorked = int.Parse(Console.ReadLine()); 
      double rate = 0; 
      Console.Write("Enter the hourly rate: "); 
      rate = double.Parse(Console.ReadLine()); 
      int taxRate = 0; 
      Console.Write("Enter the tax rate as a percent: "); 
      taxRate = int.Parse(Console.ReadLine()); 
      double grossPay = rate * hoursWorked; 
      Console.Write("Gross pay : $"); 
      Console.WriteLine(grossPay); 
      double taxesDue = grossPay * taxRate/100; 
      Console.Write("Taxes due : $"); 
      Console.WriteLine(taxesDue); 
      double netPay = grossPay - taxesDue; 
      Console.Write("Net pay : $"); 
      Console.WriteLine(netPay); 
      Console.Write("Press any key to continue"); 
      Console.Read(); 





     } 
    } 
} 
+0

のため、2桁の数字以外の通貨文字を解析することはできません。 – Jasen

答えて

0

か文字\を使用して予約済みの書式設定文字をエスケープできます。例えば

Console.Write(@"Gross pay : $"); 
3

あなたは、通貨記号を許可し、番号を取得するためにdouble.TryParseのオーバーロードを使用することができます。

double d; 
double.TryParse("$20.00", NumberStyles.Number | NumberStyles.AllowCurrencySymbol, CultureInfo.CurrentCulture, out d); 
Console.WriteLine(d); 
+0

良い答え。 C#v7から、醜いパラメータ構文を取り除くことができます。 'd'変数を別途宣言する必要はありません。 'if(doubleTryParse(" $ 20.00 "、NumberStyles.Number | NumberStyles.AllowCurrencySymbol、CultureInfo.CurrentCulture、out var d)と同じコードを書くことができます。 { Console.WriteLine(d); } ' – RBT

+0

ありがとう@RBTの説明です。 –

1

あなただけの入力行を変更できます。

Console.Write("Enter the hourly rate: $"); 

ライン:

double.Parse(...) 

通貨

Convert any currency string to double

を解析するために、前の質問には、このリンクで説明されています
関連する問題