繁体   English   中英

C#如果语句变量未更改

[英]C# If statement variables not changing

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

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

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

string Carpet = null;

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

carpetPrice也是如此。

更改

Double = carpetPrice;

Double carpetPrice;

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

string = Carpet,
         tempCarpet;  
Double = carpetPrice;

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

正确的方式是:

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

这不是可编译的代码。

在顶部:

string = Carpet,
                     tempCarpet;  
            Double = carpetPrice;

这看起来应该像

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

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

这是编译器错误

string = Carpet,
                         tempCarpet;  
                Double = carpetPrice;

更正的代码:-

string Carpet = tempCarpet;
 Double = carpetPrice = 1020.00;

我宁愿为此使用一个开关。

  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;

}

条件错误:

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

改成:

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

但是更好的方法是:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM