我的代碼可以檢測{括號錯誤,如果在文件中只有}括號,那麼它會拋出空棧異常。我想知道如何檢測兩個支架錯誤,如果{this或}這個支架丟失,那麼它會顯示錯誤。 類StackCS {如何檢測堆棧錯誤?
#region Vaiables
Stack stack;
char[] charArray;
string[] stringArray;
int linenumber;
string chError = string.Empty;
public string ChError { get { return chError +" "+ linenumber; } set { chError = value; } }
public StackCS()
{
charArray = new char[1000];
stack = new Stack();
}
#endregion
#region File
private void ReadCharFromFile(string add)
{
using (StreamReader rdr = new StreamReader(add))
{
for (int i = 0; i < charArray.Length; i++)
{
charArray[i] = (char)rdr.Read();
}
}
}
public void ReadFile(string add)
{
ReadCharFromFile(add);
stringArray = File.ReadAllLines(add);
}
#endregion
#region Stack
public void FillingStack()
{
for (int i = 0; i < charArray.Length; i++)
{
if (charArray[i] == '{')
{
stack.Push('{');
}
else if (charArray[i] == '}')
stack.Pop();
}
}
public void CheckingStack()
{
for (int i = 0; i < stringArray.Length; i++)
{
if (stack.Count != 0)
{
chError = "Error At:";
linenumber = i;
}
else
{
chError = "No Error";
}
}
}
public override string ToString()
{
string temp = string.Empty;
for (int i = 0; i < stringArray.Length; i++)
{
temp +=i+"\t\t"+stringArray[i] + "\n";
}
return temp;
}
#endregion
}
static void Main(string[] args)
{
StackCS obj = new StackCS();
try
{
// set the file location, according to ur PC setting
obj.ReadFile(@"C:\Users\5609\Desktop\Class1.cs");
obj.FillingStack();
obj.CheckingStack();
Console.WriteLine("Line Number" + " " + "File Content"+"\n");
Console.WriteLine(obj);
Console.WriteLine(obj.ChError);
}
catch (Exception e)
{
Console.WriteLine(e.Message);
obj.CheckingStack();
Console.WriteLine("Line Number" + " " + "File Content" + "\n");
Console.WriteLine(obj);
Console.WriteLine(obj.ChError);
}
}
如果你的測試文件包含類似於'Console.WriteLine(「{」)'或'Console.WriteLine(「}」)''?你需要忽略角色和字符串中的大括號嗎? –
我只需要檢查CS文件的{}括號,就像Visual Studio IDE那樣。 –
然後你需要考慮到這些字符和字符串。 –