0

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

` 出现错误,提示使用未分配的局部变量。我希望它采用这种格式,因为我想要选择人们想要的“地毯”。有谁知道这个问题的解决方案?

4

7 回答 7

2

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

string Carpet = null;

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

情况也是如此carpetPrice

于 2013-03-05T08:49:08.390 回答
1

改变

Double = carpetPrice;

Double carpetPrice;
于 2013-03-05T08:48:51.223 回答
0

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

string = Carpet,
         tempCarpet;  
Double = carpetPrice;

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

正确的方法是:

string Carpet = null, tempCarpet = null;
double carpetPrice = 0;
于 2013-03-05T08:50:07.950 回答
0

这不是可编译的代码;

在顶部:

string = Carpet,
                     tempCarpet;  
            Double = carpetPrice;

这应该看起来像

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

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

于 2013-03-05T08:50:12.013 回答
0

这是编译器错误

string = Carpet,
                         tempCarpet;  
                Double = carpetPrice;

更正的代码: -

string Carpet = tempCarpet;
 Double = carpetPrice = 1020.00;
于 2013-03-05T08:50:30.573 回答
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;

}
于 2013-03-05T08:54:43.807 回答
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);
于 2013-03-05T09:18:06.487 回答