获取有关当前上下文中不存在的变量的错误

时间:2015-10-31 17:42:26

标签: c# variables

我已经编写了一个程序,它声明了一个包含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);

2 个答案:

答案 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();
}