C#If语句变量没有变化

时间:2013-03-05 08:47:22

标签: c# if-statement

我开始学习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);

` 它出现了一个错误,指出使用未分配的局部变量。我希望它采用这种格式,因为我希望选择选择哪个“地毯”。有没有人知道解决这个问题的方法?

7 个答案:

答案 0 :(得分:2)

您正在条件内初始化Carpet,编译器无法确定代码是否会到达那里。你可以做

string Carpet = null;

或者您可以在else的最后部分为其指定一些默认值。

carpetPrice的情况也是如此。

答案 1 :(得分:1)

更改

Double = carpetPrice;

Double carpetPrice;

答案 2 :(得分:0)

您以错误的方式声明变量:

string = Carpet,
         tempCarpet;  
Double = carpetPrice;

正确的声明格式为:datatype var_name [ = value]

正确的方法是:

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

答案 3 :(得分:0)

这不是可编译的代码;

在顶部:

string = Carpet,
                     tempCarpet;  
            Double = carpetPrice;

这应该类似于

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

为了确保在使用之前设置它们,可能会清除为字符串分配初始值。双重是另一回事,因为它是一种价值类型。字符串是引用类型。

答案 4 :(得分:0)

这是编译器错误

string = Carpet,
                         tempCarpet;  
                Double = carpetPrice;

更正代码: -

string Carpet = tempCarpet;
 Double = carpetPrice = 1020.00;

答案 5 :(得分: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;

}

答案 6 :(得分: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);