关于C#的一个问题
各位高手,下面是一段C#代码,要求输出输入字符串,然后逆序输出,但老是出现错误,请高手帮忙解决。谢谢。
using System;
class StackSpace
{
static void Main()
{
string Test;
int MaxLength=50;
char[] str=new char[MaxLength];//定义字符数组,用于存储栈的数据
int i;
int CurrentPos=0;//栈顶指针
Console.WriteLine ("输入要测试的字符串:");
Test=Console.ReadLine ();//读入字符串
for(i=0;i<Test.Length ;i++)//将输入字符串一次入栈
{
if(CurrentPos<=MaxLength)//防止栈溢出
break;
str[CurrentPos]=ch;
CurrentPos++;
}
Console.Write ("输入字符串的反序:");
for(i=0;i<Test.Length;i++)//将栈中的字符出栈后输出
{
if(CurrentPos<=0)
break;
Console.Write(str[CurrentPos]);
CurrentPos--;
}
}
}
参考答案:你上面程序中 有个ch不知道是什么。应该是一个字符吧。我将你程序稍微调整了一下就可以达到你想要的效果了。程序如下。
using System;
class StackSpace
{
static void Main()
{
string Test;
int MaxLength = 50;
char[] str = new char[MaxLength];//定义字符数组,用于存储栈的数据
int i;
int CurrentPos = 0;//栈顶指针
Console.WriteLine("输入要测试的字符串:");
Test = Console.ReadLine();//读入字符串
for (i = 0; i < Test.Length; i++)//将输入字符串一次入栈
{
if (CurrentPos >= MaxLength)//防止栈溢出
break;
str[CurrentPos] = Test[i];
CurrentPos++;
}
Console.Write("输入字符串的反序:");
for (i = 0; i < Test.Length; i++)//将栈中的字符出栈后输出
{
if (CurrentPos < 0)
break;
CurrentPos--;
Console.Write(str[CurrentPos]);
}
}
}
另外注明一下,你的程序原来的错误是没有抓住指针的位置,而且有个判断if(CurrentPos<=MaxLength)//防止栈溢出
break;
是错误的,这样判断永远都不会吧字符放入堆栈中。所以导致后续的程序根本读不到数据。
还有就是后面的循环中的CurrentPos--;
这个字段是一个指针你在上一次循环的时候将这个指针已经放到了堆栈顶所以应该将这个指针在第二次循环的时候调整到合适的位置才行。我只对你的程序的这两处进行了修改程序就可以正常得到结果了。