2013-03-05 79 views
0

我開始學習C#,目前變量沒有按照我的希望更新。C#如果語句變量不變

string Carpet, 
     tempCarpet; 
Double carpetPrice; 

do{ 
Console.WriteLine("What type of carpet do you want: "); 
Console.Write("1. Berber ($3.75) | 2. Plush ($4.62) | 3. Barbed ($9.98)"); 
tempCarpet = Console.ReadLine(); 
if (tempCarpet == "1") { 
    Carpet = "Berber"; 
    carpetPrice = 3.75; 
} else if (tempCarpet == "2") { 
    Carpet = "Plush"; 
    carpetPrice = 4.62; 
} else if (tempCarpet == "3") { 
    Carpet = "Barbed"; 
    carpetPrice = 9.98; 
} else 
    Console.WriteLine("Invalid Selection."); 
}while(tempCarpet != "1"|tempCarpet != "2"|tempCarpet !="3"); 

Console.WriteLine("The Carpet" + Carpet + "costs {0:C}", carpetPrice); 

` 它想出一個錯誤,未分配的局部變量的使用。我希望它能夠採用這種格式,因爲我想要選擇哪個人需要的「地毯」。有沒有人知道解決這個問題的解決方案?

+0

邊注:在樣本的第一線作出任何感'Double = carpetPrice' – 2013-03-05 08:49:36

+2

這是無效的C#代碼 - 請發佈編譯的實際代碼。 – Oded 2013-03-05 08:49:37

+0

抱歉,我不小心把=寫這個問題時。我編輯了我的問題以反映這一點。 – Hayden 2013-03-05 08:50:33

回答

0

您聲明變量走錯了路:

string = Carpet, 
     tempCarpet; 
Double = carpetPrice; 
聲明

Correcr格式爲:datatype var_name [ = value]

Correcy方法是:

string Carpet = null, tempCarpet = null; 
double carpetPrice = 0; 
1

變化

Double = carpetPrice; 

Double carpetPrice; 
2

要初始化Carpet條件和編譯器裏面無法確定代碼是否會到達那裏。你可能做

string Carpet = null; 

或者你可以在其他的最後部分給它分配一些默認值。

carpetPrice的情況也是如此。

+0

此作品謝謝。 :D – Hayden 2013-03-05 08:54:19

+0

@Hayden,不客氣 – Habib 2013-03-05 08:56:20

0

這不是編譯代碼;

在頂部:

string = Carpet, 
        tempCarpet; 
      Double = carpetPrice; 

這應該是這個樣子

string carpet= ""; 
string tempCarpet = ""; 
double carpetPrice; 

這或許會清楚的事情了指定字符串的初始值,以確保它們在使用前設置。 double是一個不同的問題,因爲它是一個值類型。字符串是引用類型。

+0

這似乎工作。謝謝。 – Hayden 2013-03-05 08:53:38

+0

@Adriano好了 - 公平的一點,我重新回答了我的答案 - 我認爲作爲一名學習者,它可以讓事情變得更容易,但我說的並不完全正確。 – SpaceBison 2013-03-05 08:56:04

0

這是編譯器錯誤

string = Carpet, 
         tempCarpet; 
       Double = carpetPrice; 

更正後的代碼: -

string Carpet = tempCarpet; 
Double = carpetPrice = 1020.00; 
0

我寧願使用一個開關這一點。

switch(tempCarpet){ 

case "1" : Carpet = "Berber"; 
      carpetPrice = 3.75; 
    break; 

case "2" : Carpet = "Plush"; 
      carpetPrice = 4.62; 
    break; 

case "3" : Carpet = "Barbed"; 
      carpetPrice = 9.98; 
    break; 
default : Console.WriteLine("Invalid Selection."); 
    break; 

} 
+0

我也是,但這實際上並沒有解決他的編譯器錯誤...大聲笑 – 2013-03-05 08:56:00

+0

據我所知,這已經解決了。 – Atomsk 2013-03-05 10:14:47

+1

是的Atomsk,我看到了......這就是我評論的原因。這沒有回答這個問題,代碼審查StackEchange上有另一個網站... – 2013-03-05 10:55:56

0

有錯誤的條件:

  }while(tempCarpet != "1"|tempCarpet != "2"|tempCarpet !="3"); 

更改爲:

  } while (tempCarpet != "1" && tempCarpet != "2" && tempCarpet != "3"); 

但更好的方法是:

string Carpet = null; 
// ... 
// There is some code 
// ... 
} while (null == Carpet); 
+0

非常感謝。 – Hayden 2013-03-05 09:32:48