C#控制台错误:只能将赋值、调用、递增、递减和新对象表达式用作语句

C#控制台错误:只能将赋值、调用、递增、递减和新对象表达式用作语句,c#,compiler-construction,console,C#,Compiler Construction,Console,我是编程新手,正在尝试学习c。我认为我的控制台应用程序有一个简单的问题(代码如下)。错误似乎与我的if语句有关,其内容如下: //evaluate subtotals to results if (subTotalOne == subTotalTwo) { Console.WriteLine("="); } else if (subTotalOne < subTotalTwo) {

我是编程新手,正在尝试学习c。我认为我的控制台应用程序有一个简单的问题(代码如下)。错误似乎与我的if语句有关,其内容如下:

//evaluate subtotals to results
        if (subTotalOne == subTotalTwo)
        {
            Console.WriteLine("=");
        }
        else if (subTotalOne < subTotalTwo)
        {
            Console.WriteLine("<");
        }
        else (subTotalOne > subTotalTwo);
        { 
            Console.WriteLine(">"); 
        }            
名称空间itc110_a02_杂货店比较 { 班级计划 { 静态void Main(字符串[]参数) {

        Console.WriteLine("Compare Grocery Stores "); //Alert user to purpose of program with title
        Console.WriteLine("\n");//line break



        // Store 1
        Console.WriteLine("Enter the name of the first store for comparison: ");//storeName 1
        String storeOne = Console.ReadLine();//ToLower for eval

        //store 1, first item
        Console.WriteLine("Name of First product purchased at " + storeOne + ": ");//ask item
        String purchaseOne = Console.ReadLine();//collect item
        Console.WriteLine("Price paid for first purchased at " + storeOne + ": ");//ask 1st price
        Double price1A = Double.Parse(Console.ReadLine());//collect 1st price

        //store 1, second item, repeat process -- this ought to be a method or a function
        Console.WriteLine("Name of second product purchased at " + storeOne + ": ");//ask item
        String purchaseTwo = Console.ReadLine();//collect Item
        Console.WriteLine("Price paid for second purchased at " + storeOne + ": ");//Ask Item Price
        Double price1B = Double.Parse(Console.ReadLine());//Collect Item Price
        Console.WriteLine("\n");



        // Store 2, repeat process -- this ought to be a method or a function
        Console.WriteLine("Enter the name of the second store for comparison: ");//Store name 1
        String storeTwo = Console.ReadLine();// To Evals entry, we  ToLower to set to lower case

        //store 2
        Console.WriteLine("Price paid for " + purchaseOne + " at " + storeTwo + ": ");//ask 1st price
        Double price2A = Double.Parse(Console.ReadLine());//collect 1st price

        //store 2, second item
        Console.WriteLine("Price paid for " + purchaseTwo + " at " + storeTwo + ": ");//Ask Item Price
        Double price2B = Double.Parse(Console.ReadLine());//Collect Item Price
        Console.WriteLine("\n");



        // Results go here
        //Store one totals
        Console.WriteLine("************  " + storeOne + "  ************");
        Console.WriteLine(purchaseOne + ": $" + price1A);
        Console.WriteLine(purchaseTwo + ": $" + price1B);
        Console.WriteLine("\n \n");
        // store two totals
        Console.WriteLine("************  " + storeTwo + "  ************");
        // Result A: Where to shop
        Console.WriteLine(purchaseOne + ": $" + price2A);
        Console.WriteLine(purchaseTwo + ": $" + price2B);
        Console.WriteLine("\n \n");

        Console.WriteLine("************  After Price Comparison  ************");



        //merge subtotals
        Double subTotalOne = (price1A + price1B);
        Double subTotalTwo = (price2A + price2B);



        //evaluate subtotals to results
        if (subTotalOne == subTotalTwo)
        {
            Console.WriteLine("=");
        }
        else if (subTotalOne < subTotalTwo)
        {
            Console.WriteLine("<");
        }
        else (subTotalOne > subTotalTwo);
        { 
            Console.WriteLine(">"); 
        }            



        //keeps the console open
        Console.Read();
    }
}
Console.WriteLine(“比较杂货店”);//用标题提醒用户程序的用途
Console.WriteLine(“\n”);//换行符
//商店1
Console.WriteLine(“输入要比较的第一个存储的名称:”);//存储名1
String storeOne=Console.ReadLine();//ToLower for eval
//1号店,第一件
Console.WriteLine(“在“+storeOne+”:”)购买的第一个产品的名称;//询问项目
字符串purchaseOne=Console.ReadLine();//收集项目
Console.WriteLine(“在“+storeOne+”:”)首次购买时支付的价格;//询问第一个价格
Double price1A=Double.Parse(Console.ReadLine());//收取第一个价格
//存储1,第二项,重复过程——这应该是一个方法或函数
Console.WriteLine(“在“+storeOne+”:”)购买的第二个产品的名称;//询问项目
字符串purchaseTwo=Console.ReadLine();//收集项目
Console.WriteLine(“在“+storeOne+”:”)第二次购买的价格;//询问商品价格
Double price1B=Double.Parse(Console.ReadLine());//收集商品价格
Console.WriteLine(“\n”);
//存储2,重复过程——这应该是一个方法或函数
Console.WriteLine(“输入要比较的第二个存储的名称:”);//存储名称1
String storeTwo=Console.ReadLine();//若要评估条目,请将其设置为小写
//商店2
Console.WriteLine(“在“+storeTwo+”:”)为“+purchaseOne+”支付的价格;//询问第一个价格
Double price2A=Double.Parse(Console.ReadLine());//收取第一个价格
//2号店,第二件
Console.WriteLine(“在“+storeTwo+”:”)为“+purchaseTwo+”支付的价格;//询问商品价格
Double price2B=Double.Parse(Console.ReadLine());//收集商品价格
Console.WriteLine(“\n”);
//结果在这里
//存储一个总数
Console.WriteLine(“**********”+storeOne+“*************”);
Console.WriteLine(purchaseOne+“:$”+price1A);
Console.WriteLine(purchaseTwo+“:$”+price1B);
Console.WriteLine(“\n\n”);
//存储两个总数
Console.WriteLine(“**********”+storeTwo+“*************”);
//结果A:去哪里购物
Console.WriteLine(purchaseOne+“:$”+price2A);
Console.WriteLine(purchaseTwo+“:$”+price2B);
Console.WriteLine(“\n\n”);
Console.WriteLine(“比价后的*************”;
//合并小计
双倍小计=(价格1A+价格1B);
双倍小计二=(价格2a+价格2b);
//评估小计结果
如果(小计一==小计二)
{
Console.WriteLine(“=”);
}
否则如果(小计一<小计二)
{
控制台。写线(“”);
}            
//保持控制台打开
Console.Read();
}
}

}

这一行是问题所在

    else (subTotalOne > subTotalTwo);
    { 
        Console.WriteLine(">"); 
    }  
固定的:

    else
    { 
        Console.WriteLine(">"); 
    }  
说明:

您的代码相当于:

else
   (subTotalOne > subTotalTwo);//else block

{ 
    Console.WriteLine(">"); 
}  
分号使条件表达式成为语句,从而导致错误。
但是,下一个控制台语句也不会是else块的一部分,因为else块在分号之后结束。因此,即使条件表达式是有效语句,“>”也将始终打印出来,这是不需要的。

您可能会选择:

else
{
    Console.WriteLine(">");
}
因为你已经排除了所有其他的可能性


在格式化方面,我从来都不喜欢其他任何一行。特别是对于初学者,它会模糊程序流。还有一些人完全不同意我的观点……

你可能想用
string
double
来代替
string
double
来声明你的变量。@Tico-真的吗。。??这将如何解决错误?@Rohit Vats我没有说,也没有暗示它将解决错误。这只是良好的做法。冷静下来……从技术上讲,如果两个比较对象中有一个是
double.NaN
,那么如果(小计一>小计二),那么用
else
代替
else就不一样了。但这是一个小细节。谢谢大家的建议和指导,我保证我已经阅读了,在我走了一小段路后,考虑到所说的一切,将重新阅读。我的程序正在运行,我感谢你们所有人的帮助。我知道这是一件简单的事情,我感谢大家向我展示了如何让它变得更简单。我还有很多东西要学,我感谢你们所有人(我说的谢谢够多了吗?)
else
{
    Console.WriteLine(">");
}