错误CS1002 :;预期& (31,13):错误CS1525:无效的表达式术语'else'

时间:2012-10-10 17:42:48

标签: c#

布局有问题,我知道我很接近。 ///我有两个错误(31,18): error CS1002: ; expected & (31,13): error CS1525: Invalid expression term 'else' ///我试图做了所说的内容并且它犯了更多错误,所以我完全不知道如何让这个工作现在。

目前我有这个

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace CE0721a
{
    class Tut4_7
    {
        public void run()
          {
            double under16_Free = 2.5;
            double oap = 3.0;
            double other = 5.0;
            int groupSize = 0;
            double totalCost = 0;
            int age = 0;

        while (age!=-1)
        {
            Console.WriteLine("Enter an Age or -1 to quit");
            age=int.Parse(Console.ReadLine());

            if(age<16)&(age>-1);
            {
                groupSize++;
                totalCost = totalCost + under16_Free;
            }
            else if(age>16)
            {
                groupSize++;
                totalCost = totalCost + oap;
            }
            else if(age>16)&(age<=65);
            {
                groupSize++;
                totalCost = totalCost + other;
            }
        }
        if (groupSize>6)
        {
            totalCost = totalCost - (totalCost/5);
        }
        Console.WriteLine("Total Cost = "(totalCost));
        }
    }
}

我正在尝试这样做

**为当地游泳池编写一个程序,根据他们的年龄显示一组人的入场费用。程序应继续提示用户输入年龄,直到输入-1,然后显示该组中的总人数以及该组的总成本。入场费如下:   - 16岁以下£2.50超过65-£3和所有其他游泳选手 - £5

超过6人的团体应享受20%的折扣。**

这是连接到另一个名为Program.cs的cs,这样的布局和工作,因为我已经测试了其他cs文件,这显示程序

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace CE0721a
{
    class Program
    {
        static void Main(string[] args)
        {
            Tut4_7 myProgram = new Tut4_7();
            myProgram.run();
        }
    }
}

再次感谢,如果有人可以提供帮助

6 个答案:

答案 0 :(得分:6)

一些语法问题:

  • if语句的开头行不应以分号结尾
  • 你的化合物比较需要另外一组括号
  • 您几乎总是希望使用&&代替&,因为前者会短路

所以

if(age<16)&(age>-1);

应该成为

if ((age<16) && (age>-1))

或者,正如@Servy在评论中提到的那样

if (age<16 && age>-1)

答案 1 :(得分:2)

在一些if / else语句的末尾有分号,而你使用了错误的逻辑运算符:

if(age<16)&(age>-1);

应该是

if(age < 16 && age >= 1)
{
    //Code here
}

else if(age>16)&(age<=65);

应该是

else if(age > 16 && age <= 65)
{
    //Code here
}

您想使用&&运算符而不是&运算符,而@Servy会在注释中对原因进行很好的解释。

答案 2 :(得分:1)

if(age<16)&(age>-1);

三个问题:

  • 首先,你不应该添加;在if语句之后,这将导致 没有(空陈述)被执行。

  • 第二个问题是括号。你正在关闭破坏 你的if条件。你不能关闭它们并重新打开它们,但是你 可以使用括号分隔外括号中的部分。

  • 最后一个问题是AND运算符。你使用二进制AND&amp;和 不是逻辑的AND&amp;&amp;。

该行应如下所示:

if(age<16 && age>-1)

同样的事情适用于另一条线。

答案 3 :(得分:1)

试试这个:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace CE0721a
{
    class Tut4_7
    {
        public void run() 
          { 
            double under16_Free = 2.5; 
            double oap = 3.0; 
            double other = 5.0; 
            int groupSize = 0; 
            double totalCost = 0; 
            int age = 0; 

        while (age!=-1) 
        { 
            Console.WriteLine("Enter an Age or -1 to quit"); 
            age=int.Parse(Console.ReadLine()); 

            if((age<16)&&(age>-1))
            { 
                groupSize++; 
                totalCost = totalCost + under16_Free; 
            } 
            else if(age>16) 
            { 
                groupSize++; 
                totalCost = totalCost + oap; 
            } 
            else if((age>16)&&(age<=65))
            { 
                groupSize++; 
                totalCost = totalCost + other; 
            } 
        } 
        if (groupSize>6) 
        { 
            totalCost = totalCost - (totalCost/5); 
        } 
        Console.WriteLine("Total Cost = " + totalCost); 
        }
    }
}

答案 4 :(得分:0)

您可以尝试使用

if ( (age<16) & (age>-1))

语法

if(condition)
{
  //Treatment
} 

答案 5 :(得分:0)

你的if语句形成错误,你正在使用二进制&amp;不是逻辑&amp;&amp;并且两个条件只需要在单个()中,最重要的是你不需要在if语句之后进行半冒号,这表示结束

namespace CE0721a
{
    class Tut4_7
    {
        public void run()
          {
            double under16_Free = 2.5;
            double oap = 3.0;
            double other = 5.0;
            int groupSize = 0;
            double totalCost = 0;
            int age = 0;

        while (age!=-1)
        {
            Console.WriteLine("Enter an Age or -1 to quit");
            age=int.Parse(Console.ReadLine());

            if(age<16 && age>-1)
            {
                groupSize++;
                totalCost = totalCost + under16_Free;
            }
            else if(age>16)
            {
                groupSize++;
                totalCost = totalCost + oap;
            }
            else if(age>16 && age<=65)
            {
                groupSize++;
                totalCost = totalCost + other;
            }
        }
        if (groupSize>6)
        {
            totalCost = totalCost - (totalCost/5);
        }
        Console.WriteLine("Total Cost = "(totalCost));
        }
    }
}