2013-04-18 32 views
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()); 

     } 

回答

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--; 
      } 
     } 
+0

感谢您的答复。我已经替换了packageInfo [4] = height * width * length;与packageInfo [4] = packageInfo [0] * packageInfo [1] * packageInfo [3];它的工作。这是一个体面的解决方案,还是有更好的解决方案?干杯。 –

1

ÿ ou应该在得到用户输入后计算它们。重新排列你这样编码:

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]); 
+0

我已经尝试过,并没有帮助。 –

+0

@RomanGusan:答复已更新 – Xaqron

1

C#中的变量不像数学中的变量。从我所知道的情况来看,只要修改了packageInfo[0], packageInfo[1], packageInfo[2],就会预计packageInfo[4]会被更新。因为在数学中,如果将体积定义为高度*宽度*长度并且您修改了其中的任何变量,那么体积会发生变化。不幸的是,C#中的“标准变量”仅仅是一些位。您从中读取/写入。我不是很精确(我对语言不熟练),但没有用其他语言定义变量的概念(它们只能用一些值初始化,这可能是其他变量的值)。要建立这样的关系需要语言结构来表示它们。

那么你的代码目前所做的是:

  • 初始化的高度,长度,宽度等
  • COPY这些值到数组
  • 当您从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 }; 
} 
相关问题