0

这是我的代码块,我不知道如何让周长和体积执行计算。例如,当我为前 4 个参数输入 1,1,1,1 时,我得到 0, 0 表示体积和周长。

       if (packages == 1)
        {

            int width = 0, length = 0, height = 0, weight = 0;
            int volume = 0, girth = 0;
            int[] packageInfo = new int[6] { width, length, height, weight ,volume, girth };
            packageInfo[4] = height * width * length;
            packageInfo[5] = (2 * length + 2 * width);
            double packageSum = 0;


            for (int k = 0; k < 4; k++)
            {
                string line = Console.ReadLine();
                if (!int.TryParse(line, out packageInfo[k]))
                {
                    Console.WriteLine("Couldn't parse {0} - please enter integers", line);
                    k--;
                }
            }

            if(packageInfo[3] > 25)
            {
                packageSum = 0;
                Console.WriteLine("Package couldn't be shipped because of its size.");
            }
            if (volume > 4800)
            {
                packageSum = packageSum + 5.95;
            }

            if (volume > 9600)
            {
                packageSum = 0;
                Console.WriteLine("Package couldn't be shipped because of its size.");
            }

            foreach (var item in packageInfo)
                Console.WriteLine(item.ToString());

        }
4

3 回答 3

1

您应该在获得用户输入后计算它们。以这种方式重新排列您的代码:

for (int k = 0; k < 4; k++)
            {
                string line = Console.ReadLine();
                if (!int.TryParse(line, out packageInfo[k]))
                {
                    Console.WriteLine("Couldn't parse {0} - please enter integers", line);
                    k--;
                }
            }

packageInfo[4] = packageInfo[0] * packageInfo[1] * packageInfo[2];
packageInfo[5] = (2 * packageInfo[0] + 2 * packageInfo[1]);
于 2013-04-18T22:50:02.403 回答
1

C# 中的变量与数学中的变量不同。据我所知,您希望在修改packageInfo[4]时得到更新packageInfo[0], packageInfo[1], packageInfo[2]。因为,在数学上,如果你将体积定义为高度*宽度*长度并且你修改了这些变量中的任何一个,那么体积就会改变。不幸的是,C# 中的“标准变量”只是一堆位。你读/写它。我不是很精确(我对语言不是那么精通),但是没有根据其他变量定义变量的概念(它们只能用某个值初始化,这可能是某个其他变量的值)。要创建这样的关系,需要语言结构来表示它们。

因此,您的代码当前所做的是:

  • 初始化高度、长度、宽度等。
  • 将这些值复制到数组中
  • 当您从 中读取输入时ConsolepackageInfo[0], packageInfo[1], packageInfo[2], packageInfo[3]会进行修改。
  • 数组中的所有值都没有关联/相互依赖。如果你修改packageInfo[0]它不会修改任何其他intpackageInfo[]

您可以通过以下方式模拟行为以使其更类似于数学:

private int _height;
private int _width;
private int _length;
private int Volume = 
{
    get { return _height * _width * _length };
}
于 2013-04-18T22:50:19.277 回答
0

仔细查看您的代码。

首先,你这样做:

        int width = 0, length = 0, height = 0, weight = 0;
        int volume = 0, girth = 0;
        int[] packageInfo = new int[6] { width, length, height, weight ,volume, girth };
        packageInfo[4] = height * width * length;
        packageInfo[5] = (2 * length + 2 * width);
        double packageSum = 0;

0 * 0 * 0 = 0。

2 * 0 + 2 * 0 = 0

然后,在计算出体积和周长,您实际上会向用户查询输入:

        for (int k = 0; k < 4; k++)
        {
            string line = Console.ReadLine();
            if (!int.TryParse(line, out packageInfo[k]))
            {
                Console.WriteLine("Couldn't parse {0} - please enter integers", line);
                k--;
            }
        }
于 2013-04-18T22:47:37.657 回答