char[,] bomb = new char[10, 10];
Console.WriteLine("input:");
int count = Convert.ToInt32(Console.ReadLine());
int i;
int j;
Random r = new Random();
for (int c = 0; c < count; c++)
{
i = r.Next(10);
j = r.Next(10);
if (bomb[i, j] == '*')
c--;
else
bomb[i, j] = '*';
}
for (i = 0; i < 10; i++)
{
for (j = 0; j < 10; j++)
{
if (bomb[i, j] != '*')
{
bomb[i, j] = checkbomb2(i, j);
}
Console.Write(bomb[i, j] + " ");
}
Console.WriteLine();
}
}
static char checkbomb2(int a, int b)
{
char[,] bomb = new char[10, 10];
char A;
int num = 0;
for (int i = a - 1; i < a + 1; i++)
{
if ((a - 1) == -1 || (a + 1) == 10)
continue;
else
{
for (int n = b - 1; n < b + 1; n++)
{
if ((b - 1) == -1 || (b + 1) == 10)
continue;
else
{
if (bomb[i, n] == '*')
{
num++;
A = Convert.ToChar(num.ToString());
}
}
}
}
}
return (A);
初学C#,老师让编了个扫雷的基础程序,为什么子函数里返回值A的时候提示未赋值的局部变量A。我尝试在子函数里给定义A一个空值好像也没用。请大神帮看看!
结尾少了个},补一下。
char A='';之后会提示出错“空字符”
追答刚查了资料,是我之前的理解错了。互相学习了。
char是字符类型,char A='';本身就会编译报错的。因为根本就没有''这个字符···
char可以存放一个是16位的Unicode字符,’a‘、’b‘···'1'、’2‘等等都是合法的,其它类似’\0‘这类的字符也是允许的,而’123‘、’abc‘之类的表示已经超出了字符表示的长度,是不行的。实际上'\0'表示的就是我们理解的空字符,而不是直接使用'',’‘应该是不被允许的。
回到你的问题上,之前的报错是因为char对象没有初始化,需要赋初值,char A=’‘;是错误写法,改成char A='\0';试试。
char类型初始化是char A=‘’么?我这么做了之后还是有问题