我开始学习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 :(得分: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);