关于一个C#程序的两个问题【不显示与异常】
1、请问这个图片显示问题怎么解决?2、能不能帮我看看下面的代码,哪里出错了,为什么什么都不显示?privatevoid开始分析ToolStripMenuItem_Clic...
1、请问这个图片显示问题怎么解决?
2、能不能帮我看看下面的代码,哪里出错了,为什么什么都不显示?
private void 开始分析ToolStripMenuItem_Click_1(object sender, EventArgs e)
{
listView1.Visible = true;
int i = 1;
char[] ch = richTextBox1.Text.ToCharArray();
for (int j = 0; j <=ch.Length ;j++ )
{
string[] ana=new string[100];
if (ch[j].ToString() =="") break;
else
{
int k = 0;
do
{
ana[k] =ch[j].ToString();
k++;
j++;
} while (ch[j].ToString() == "");
string a = Convert.ToString(i++);
ListViewItem item = new ListViewItem(a);
if (ana[k+1] == "main" || ana[k] == "int" || ana[k] == "float" || ana[k] == "printf" || ana[k] == "if" || ana[k] == "for" || ana[k] == "while" || ana[k] == "do" || ana[k] == "return" || ana[k] == "break" || ana[k] == "continue" || ana[k] == "char" || ana[k] == "string" || ana[k] == "void")
{
item.SubItems.Add(ana[k]);
item.SubItems.Add("关键字");
}
else if (ana[k] == "+" || ana[k] == "-" || ana[k] == "==" || ana[k] == "*" || ana[k] == "/" || ana[k] == "<" || ana[k] == ">" || ana[k] == "<=" || ana[k] == ">=" || ana[k] == "=" || ana[k] == "!=" || ana[k] == "++" || ana[k] == "--")
{
item.SubItems.Add(ana[k]);
item.SubItems.Add("运算符");
}
else if (ana[k] == "(" || ana[k] == ")" || ana[k] == "[" || ana[k] == "]" || ana[k] == "{" || ana[k] == "}" || ana[k] == "," || ana[k] == ":" || ana[k] == ";" || ana[k] == "\"" || ana[k] == "*/" || ana[k] == "/*")
{
item.SubItems.Add(ana[k]);
item.SubItems.Add("介符");
}
else
{
item.SubItems.Add(ana[k]);
item.SubItems.Add("标识符");
}
listView1.Items.Add(item);
}
} MessageBox.Show("分析完毕!");
}
} 展开
2、能不能帮我看看下面的代码,哪里出错了,为什么什么都不显示?
private void 开始分析ToolStripMenuItem_Click_1(object sender, EventArgs e)
{
listView1.Visible = true;
int i = 1;
char[] ch = richTextBox1.Text.ToCharArray();
for (int j = 0; j <=ch.Length ;j++ )
{
string[] ana=new string[100];
if (ch[j].ToString() =="") break;
else
{
int k = 0;
do
{
ana[k] =ch[j].ToString();
k++;
j++;
} while (ch[j].ToString() == "");
string a = Convert.ToString(i++);
ListViewItem item = new ListViewItem(a);
if (ana[k+1] == "main" || ana[k] == "int" || ana[k] == "float" || ana[k] == "printf" || ana[k] == "if" || ana[k] == "for" || ana[k] == "while" || ana[k] == "do" || ana[k] == "return" || ana[k] == "break" || ana[k] == "continue" || ana[k] == "char" || ana[k] == "string" || ana[k] == "void")
{
item.SubItems.Add(ana[k]);
item.SubItems.Add("关键字");
}
else if (ana[k] == "+" || ana[k] == "-" || ana[k] == "==" || ana[k] == "*" || ana[k] == "/" || ana[k] == "<" || ana[k] == ">" || ana[k] == "<=" || ana[k] == ">=" || ana[k] == "=" || ana[k] == "!=" || ana[k] == "++" || ana[k] == "--")
{
item.SubItems.Add(ana[k]);
item.SubItems.Add("运算符");
}
else if (ana[k] == "(" || ana[k] == ")" || ana[k] == "[" || ana[k] == "]" || ana[k] == "{" || ana[k] == "}" || ana[k] == "," || ana[k] == ":" || ana[k] == ";" || ana[k] == "\"" || ana[k] == "*/" || ana[k] == "/*")
{
item.SubItems.Add(ana[k]);
item.SubItems.Add("介符");
}
else
{
item.SubItems.Add(ana[k]);
item.SubItems.Add("标识符");
}
listView1.Items.Add(item);
}
} MessageBox.Show("分析完毕!");
}
} 展开
展开全部
for (int j = 0; j <=ch.Length ;j++ )
{
string[] ana=new string[100];
if (ch[j].ToString() =="") break;
else
{
int k = 0;
do
{
ana[k] =ch[j].ToString();
k++;
j++;
} while (ch[j].ToString() == "");
这段代码里,里层的do循环里改变了外层循环变量j的值,使其超出了字符数组ch的下标。改成以下代码试试:
for(int m=0;m<=j;m++)
{
ana[k] =ch[m].ToString();
k++;
if(ch[m].ToString()!="")
break;
}
没仔细看,不知道你程序的最终效果是什么。但这段代码肯定是错的,希望对你有用。
{
string[] ana=new string[100];
if (ch[j].ToString() =="") break;
else
{
int k = 0;
do
{
ana[k] =ch[j].ToString();
k++;
j++;
} while (ch[j].ToString() == "");
这段代码里,里层的do循环里改变了外层循环变量j的值,使其超出了字符数组ch的下标。改成以下代码试试:
for(int m=0;m<=j;m++)
{
ana[k] =ch[m].ToString();
k++;
if(ch[m].ToString()!="")
break;
}
没仔细看,不知道你程序的最终效果是什么。但这段代码肯定是错的,希望对你有用。
追问
我要实现的功能是显示出我分析的结果,比如显示出“1 main 关键字” 这样的。但是现在就是中间的那个显示有误,我截了图,你看看。
我觉得是字符串的处理问题,因为用ff的时候理论上它只会显示一个字符,现在是一个都不显示==,而用ana[k]的时候理论上它也只会显示一个字符,可它只显示第一个字符==。
追答
变量ff赋为空值之后,在哪里还赋了值呢?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询