-5

我尝试运行我的程序,并将我的代码与我朋友的代码进行了比较,但是即使我们尝试更改这些行(我认为错误来自哪里),错误仍然出现:

try
{
    FileStream b = new FileStream(@"C:\User\User_2\Desktop\board.txt", FileMode.Open);
    StreamReader stream = new StreamReader(b);

    int x = 0;
    while (!stream.EndOfStream)
    {
        if (x == 0)
            g1 = stream.ReadLine().Split(' ');
        else if (x == 1)
            g2 = stream.ReadLine().Split(' ');
        else if (x == 2)
            g3 = stream.ReadLine().Split(' ');

        x++;
    }
    stream.Close();
    b.Close();
}
catch (Exception e) { }

该程序用于检查包含以下 3 行的文本文件:

欧。X
XO。
X 。○

...看看是否有赢家。

这是 Visual Studio 突出显示错误的部分:

int n = 0;
int m = n + 1;
int o = m + 1;

Boolean result = false;
int winner = 0;
string dw = "";

while (n <= 2)
{
    // In this if-statement is the error:
    if (g1[n].Equals(g2[n]) && g2[n].Equals(g3[n]) && !g1[n].Equals("."))
    {
        result = true;
        winner++;
        dw = g1[n];
    }
    if (g1[n].Equals(g1[m]) && g1[m].Equals(g1[o]) && !g1[n].Equals("."))
    {
        result = true;
        winner++;
        dw = g1[n];
    }
    else if (g2[n].Equals(g2[m]) && g2[m].Equals(g2[o]) && !g2[n].Equals("."))
    {
        result = true;
        winner++;
        dw = g2[n];
    }
    else if (g3[n].Equals(g3[m]) && g3[m].Equals(g3[o]) && !g3[n].Equals("."))
    {
        result = true;
        winner++;
        dw = g3[n];
    }
    else if (g1[n].Equals(g2[m]) && g2[m].Equals(g3[o]) && !g1[n].Equals("."))
    {
        result = true;
        winner++;
        dw = g1[n];
    }
    else if (g3[n].Equals(g2[m]) && g2[m].Equals(g1[o]) && !g3[n].Equals("."))
    {
        result = true;
        winner++;
        dw = g3[n];
    }
    n++;
}

我真的不知道该怎么办知道,我不能让它工作。

编辑:我尝试在 if 语句之前打印出数组的值,但它没有打印出任何内容。对不起,伙计们,我真的是新来的。

4

3 回答 3

1

首先,尝试像这样读取文件:

using System.IO;

try
{
    var file = @"C:\User\User_2\Desktop\board.txt";
    var lines = File.ReadAllLines(file).ToList();
    var g1 = lines[0].Split(' ');
    var g2 = lines[1].Split(' ');
    var g3 = lines[2].Split(' ');
}
catch (Exception e) 
{ 
    throw e; 
}

可能现在您会抛出异常。

该行catch (Exception e) { } 是没有被通知有异常的罪魁祸首。您应该始终处理在代码中捕获的异常。

PS可能你必须C:\Users\...在路径中使用,而不是C:\User\.... 无论如何,请确保您使用文件的有效路径。

于 2013-05-02T12:30:56.773 回答
0

使用Equals时必须确保调用的对象不为空;

object oneValue = 1;
object nullValue = null;

var result = nullValue.Equals(oneValue); // Throws NullReferenceException because nullValue is null

您可以改用相等运算符。

string oneValue = "1";
string nullValue = null;

var result = nullValue == oneValue; // False
于 2013-05-02T12:32:36.263 回答
0

您可以使用==运算符而不是Equals方法,这需要实例化对象。但是您仍然需要确保该值不为空。

于 2013-05-02T12:34:01.200 回答