2

我的布局有问题,我知道我很接近。/// 我有两个错误是(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();
        }
    }
}

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

4

7 回答 7

6

几个语法问题:

  • if 语句的开头行不应以分号结尾
  • 您需要在复合比较周围使用另一组括号
  • 你几乎总是想使用&&而不是&因为前者会短路

所以

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

应该成为

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

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

if (age<16 && age>-1)
于 2012-10-10T17:46:17.327 回答
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 在评论中很好地解释了原因。

于 2012-10-10T17:45:51.607 回答
1
if(age<16)&(age>-1);

三个问题:

  • 首先,您不应该添加 ; 在 if 语句之后,这不会导致任何内容(空语句)被执行。

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

  • 最后一个问题是 AND 运算符。您使用二进制 AND & 而不是逻辑 AND &&。

该行应如下所示:

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

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

于 2012-10-10T17:47:51.873 回答
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); 
        }
    }
}
于 2012-10-10T17:51:45.243 回答
0

对于初学者来说:

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

应该是&&。你想要一个逻辑而不是按位与。

于 2012-10-10T17:45:42.667 回答
0

你可以试试

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

句法

if(condition)
{
  //Treatment
} 
于 2012-10-10T17:46:32.557 回答
0

您的 if 语句格式不正确,您使用的是二进制 & 而不是逻辑 && 并且两个条件只需要在一个 () 中,最重要的是您不需要在 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));
        }
    }
}
于 2012-10-10T17:48:50.603 回答