2016-12-28 2 views
-1

これで、私はまだ作業中のロジックエラーがいくつか残っています。私は自分自身を理解したい人は心配していません。私はいくつかの独立した研究のためのスロットマシンのアプリで作業していると私はフォーマットの例外を取得している変数にプレーヤーの現金を示すラベルの値を解析しようとするとき。誰かが私にこの問題を解決する方法を説明することができましたか、もっと重要なのはなぜこの例外が発生するのかです。私もtryparseとconvert.todoubleを使ってみました。ご協力ありがとうございました。申し訳ありませんが、これは愚かな質問です。まだ勉強してる。文字列をdouble型に構文解析してフォーマット例外を取得する

protected void PullBTN_Click(object sender, EventArgs e) 
{ 

    //get players cash//////////////////////////////   
    double playersCash = Convert.ToDouble(playerMoneyLBL.Text); 

    //other way i tride that didn't work//////////// 
    //double playersCash = 0; 
    // double.TryParse(playerMoneyLBL.Text.Trim(),out playersCash); 

    // get players bet ///////////////////////////// 
    double playerBet = 0; 
    if (!double.TryParse(betTB.Text, out playerBet)) 
     return; 

    // spin the slots////////////////////////////// 
    Image1.ImageUrl = spinReel(); 
    Image2.ImageUrl = spinReel(); 
    Image3.ImageUrl = spinReel(); 

    //find multiplier////////////////////////////// 
    double multiplier = findMultiplier(); 

    //find winnings/////////////////////////////// 
    double winnnings = multiplier * playerBet; 
    playerMoneyLBL.Text = (playersCash + winnnings).ToString(); 
    //add winnings to players money////////////// 
    playerMoneyLBL.Text = (playersCash + winnnings).ToString(); 
} 
+2

てみたい場合。完全なコードを投稿しないでください –

+0

get player現金のコメントのすぐ下にあるもの – Roger

+0

無関係なコードを削除するように気をつけてください。おそらくこの行は 'double playersCash = Convert.ToDouble(playerMoneyLBL.Text);'の代わりに 'TryParse'を使用します。 'Convert.To ...' –

答えて

2

ここに問題があります。

playerMoneyLBL.Text = "$100"; 

あなたは、フロント100の$を持っているとして、あなたはそれが浮かぶように変換することはできません。このようなものにする。

double playersCash = Convert.ToDouble(playerMoneyLBL.Text.substring(1)); 
1

double.Parseは、デフォルトで現在の環境でCurrentCulture設定を使用します。

double d = double.Parse("Your Text Here", CultureInfo.InvariantCulture); 

またはあなたはより安全な方法は、エラーを与えるライン

value = "Your String"; 
style = NumberStyles.Number | NumberStyles.AllowCurrencySymbol| NumberStyles.AllowThousands; 
culture = CultureInfo.InvariantCulture 
if(Double.TryParse(value, style, culture, out number)) 
{ 
    //write your code for true condition 
} 
else 
{ 
    //write your code for false condition 
} 
関連する問題