我尝试运行我的程序,并且还将我的代码与我朋友的代码进行了比较,但即使我们尝试更改这些行(我认为错误来自哪里),错误也会一直显示出来:
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行的文本文件:
O . X X O . X . O
......看看是否有胜利者。
这是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语句之前打印出数组的值,但它不打印任何内容。对不起,伙计们,我真的很新。
答案 0 :(得分: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) { }
是没有被通知存在异常的罪魁祸首。您应该始终处理代码中捕获的异常。
P.S。可能您必须在路径中使用C:\Users\...
,而不是C:\User\...
。无论如何,请确保使用文件的有效路径。
答案 1 :(得分: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
答案 2 :(得分:0)
您可以使用==
运算符代替Equals
方法,该方法需要实例化对象。但是你仍然需要确保该值不为空。