为什么无效的表达式术语"字符串"出现?

时间:2015-01-26 20:52:21

标签: c# error-handling

我认为该错误与If语句有关,但我尝试搜索错误,并且大多数问题都是由语法错误引起的,这对我来说似乎并非如此。提前感谢您的帮助。

using System;

namespace FirstConsoleProjectSolution
{

  class MainClass
  {

    public static void Main (string[] args) // this is a method called "Main". It is called when the program starts.
    {
        string square;
        string cylinder;

        Console.WriteLine ("Please enter a shape");

        if (string == square) { 

            double length;
            double width;
            double height;

            Console.WriteLine ("Please enter length");
            Console.ReadLine (Convert.ToDouble ());

            Console.WriteLine ("Please enter width");
            Console.ReadLine (Convert.ToDouble ());

            Console.WriteLine ("Please enter height");
            Console.ReadLine (Convert.ToDouble ());

            Console.WriteLine ("Your total volume is" + length * width * height);
        }

        if (string == cylinder) {

            double areaOfBase;
            double height;

            Console.WriteLine ("Please enter area of base");
            Console.ReadLine (Convert.ToDouble ());

            Console.WriteLine ("Please enter height");
            Console.ReadLine (Convert.ToDouble ());

            Console.WriteLine ("Your total volume is" + areaOfBase * height);

        }
    }

  }

}   

3 个答案:

答案 0 :(得分:3)

这是因为这句话:

if (string == square) {

string关键字表示数据类型,无法比较数据类型和字符串。

您打印出来的消息表明您正在尝试输入内容,但没有输入。我认为你正在尝试做类似的事情:

Console.WriteLine ("Please enter a shape");
string shape = Console.ReadLine();
if (shape == "square") {
  ...

稍后在代码中,当您尝试输入数字时,您将使用这样的代码来解析字符串并将其放入变量中:

length = Convert.ToDouble(Console.ReadLine());

答案 1 :(得分:0)

您没有名为string的变量。使用string也是违法的,因为它是该语言中的关键字。

如果您对使用变量名称string感到满意(我可能会避免使用它,因为在这种情况下它不是很具描述性),您可以通过在开头添加@符号来转义关键字变量名称。

您的代码有多个问题。首先,您实际上并不是在开始时要求任何输入。如果您的目的是从用户那里获得输入,则应考虑将Console.ReadLine()的值赋给变量。您应该考虑以下内容:

Console.WriteLine("Please enter a shape");
string shapeType = Console.ReadLine();

if (shape == "square")
{
    //do something
}

如果您坚持命名变量string,则必须说明

string @string = Console.ReadLine();

答案 2 :(得分:0)

您尚未分配字符串变量

        string square;
        string cylinder;

您尚未捕获用户的输入

解决方案

string square = "square";
string cylinder = "cylinder";
string input;

Console.WriteLine ("Please enter a shape");
input = Console.ReadLine();

if (input == square) { 

    // Do stuff

}

您正在收到错误,因为您正在比较基本类型声明' string'到字符串柱面的实例

if (string == square) {