【问题标题】:I don't understand why I am receiving the following errors我不明白为什么我会收到以下错误
【发布时间】:2013-10-12 20:57:42
【问题描述】:

我很确定我完全正确。我在想不知何故我的语法是错误的,但我没有运气尝试谷歌为什么它是错误的。这是我的代码:

namespace Exercise1
{
    class Program
    {
        static void Main(string[] args)
        {
            Values aValue = new Values();

            //set array
            int[] number = new int[12];

            //ask user for input
            Console.WriteLine("Please enter a value between 0 and 10: ");
            aValue.InValue = Console.ReadLine(); //Read input
            aValue.IntValue = int.Parse(aValue.InValue); //convert string to int

            while (aValue.IntValue != -99) //user has not stopped program

                if (aValue.IntValue > 10 || aValue.IntValue < 0) //valid value
                    Console.WriteLine("Thank you! Please enter '-99' when you are ready to finsih.");
            aValue.InValue = Console.ReadLine(); //read input
            aValue.IntValue = int.Parse(aValue.InValue); //convert string to int
            number[aValue.IntValue]++; //add input to corresponding array box

????        else 
                Console.WriteLine("You have entered an invalid value.");
            aValue.InvalidValueCount()++;

            namespace Exercise1
            {
                class Values
                {
                    private string inValue;
                    public string InValue { get; set; }

                    private int intValue;
                    public int IntValue { get; set; }

                    private int validValueCount;
                    public int ValidValueCount { get; set; }

                    private int invalidValueCount;
                    public int InvalidValueCount() { 
                        invalidValueCount = 0;
                        return invalidValueCount;
                    }
                }
           }

错误信息如下:

表达式术语“else”无效
;预期(在“其他”之后)
只有赋值、调用、递增、递减、等待和新对象表达式可以用作语句(在“number[aValue.IntValue]++;”之后)
递增或递减运算符的操作数必须是变量、属性或索引器(在“aValue.InvalidValueCount()++;”之后)

感谢您的帮助!

【问题讨论】:

  • 你的花括号在哪里?
  • 每当我将它们放入 While 循环时都会出现错误。
  • whileif 块确实需要花括号,否则编译器如何知道何时开始/结束块?这不是 Python,块不是由 C# 中的缩进确定的。您可能应该查找一些有关如何在 C# 中编写 while/if 语句的示例。
  • 我已经缩进了代码,因为编译器“看到”了它,以帮助你理解你的错误。你有一个 else 突然出现与前一个 if 无关,因为你没有正确使用大括号。
  • 无用的标题对网站对其他人的价值没有贡献。

标签: c# syntax-error


【解决方案1】:

while/if/else 之后的多行代码块需要大括号括起来

        while (aValue.IntValue != -99) //user has not stopped program
        { 
            if (aValue.IntValue > 10 || aValue.IntValue < 0) //valid value
            {
                Console.WriteLine("Thank you! Please enter '-99' when you are ready to finsih.");
                aValue.InValue = Console.ReadLine(); //read input
                aValue.IntValue = int.Parse(aValue.InValue); //convert string to int
                number[aValue.IntValue]++; //add input to corresponding array box
            }
            else 
            {
                Console.WriteLine("You have entered an invalid value.");
                aValue.InvalidValueCount()++; // <-- this is your error
            }
        }

【讨论】:

  • 我这样做了,现在我的错误如下:“无效的表达式术语 'else'”“;预期”(在 else 之后)“只有赋值、调用、递增、递减、等待和新对象表达式可以用作语句”(在 else 之前的大括号之后)和“递增或递减运算符的操作数必须是变量、属性或索引器”(在“aValue.InvalidValueCount()++;”之后)
  • 你不能在函数调用的结果上使用增量运算符++
  • 我使 aValue.InvalidValueCount() 不再是一个函数,并且它起作用了。感谢您的帮助!
猜你喜欢
  • 2016-02-03
  • 1970-01-01
  • 1970-01-01
  • 2018-10-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-20
  • 1970-01-01
相关资源
最近更新 更多