我已经编写了一个程序,它声明了一个包含10个整数的数组,从用户那里获取输入并将它们放入数组中,然后接受最高值,最低值,所有值的总和以及平均值的参数。
主要方法显示所有统计数据。我不知道为什么,但我收到了错误
k在当前上下文中不存在 - 第51行第5列
当我之前在给定的行之前声明它时。任何帮助将不胜感激。
query
我特别关注的问题是:
$query = mysqli_query($conn, $myquery);
if ( ! $query ) {
echo mysqli_error($conn); //You need to put $conn here to display error.
die;
}
$data = array();
while($row = mysqli_fetch_assoc($query)) {
$data[] = $row;
}
echo json_encode($data);
mysqli_close($conn);
答案 0 :(得分:0)
我认为你的意思是将if-else块放在for循环中。
由于您想检查每次迭代的输入数是否为999,您可以像这样编写for循环:
for(int k = 0; k < 10; ++k)
{
Console.WriteLine("Enter a whole number or 999 to quit: ");
strTemp = Console.ReadLine();
while(!int.TryParse(strTemp, out intTemp))
{
Console.WriteLine("Input was not in the correct format");
Console.Write("Please enter a valid number: ");
strTemp = Console.ReadLine();
}
if(intTemp != 999)
{
intArray[k] = intTemp;
++numbersEntered;
}
else
{
k = 10;
}
}
答案 1 :(得分:0)
当代码离开k
循环时,循环变量for
超出范围。因此,您只能在循环中使用变量k
。
因此,您需要在if-else
循环中移动for
。将您的FillArray()
方法更改为
private static int[] FillArray()
{
int[] intArray = new int[10];
int numbersEntered = 0;
int intTemp = 0;
string strTemp = "";
for (int k = 0; k < 10; ++k)
{
Console.WriteLine("Enter a whole number or 999 to quit: ");
strTemp = Console.ReadLine();
while (!int.TryParse(strTemp, out intTemp))
{
Console.WriteLine("Input was not in the correct format");
Console.Write("Please enter a valid number: ");
strTemp = Console.ReadLine();
}
if (intTemp != 999)
{
intArray[k] = intTemp;
++numbersEntered;
}
else
break;
}
Array.Resize(ref intArray, numbersEntered);
return intArray;
}
另外,我建议将ArrayAverage
更改为double类型。例如2,3 =&gt;平均2.5
double ArrayAverage = 0; //average need not be whole number
此外,使用Linq
,您可以将Calculations
方法缩短为
//using System.Linq;
private static void Calculations(int[] intArray, out int Highest, out int Lowest, out int intSum, out double average)
{
Lowest = intArray.Min();
Highest = intArray.Max();
intSum = intArray.Sum();
average = intArray.Average();
}