C# 使用了未赋值的局部变量 10

char[,]bomb=newchar[10,10];Console.WriteLine("input:");intcount=Convert.ToInt32(Conso... 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一个空值好像也没用。请大神帮看看!
结尾少了个},补一下。
展开
 我来答
孤灯江湖
推荐于2017-06-01 · TA获得超过281个赞
知道小有建树答主
回答量:213
采纳率:0%
帮助的人:161万
展开全部
首先,为了防止这种不必要的错误,初始化变量的时候,最好先赋个默认值,比如char A='';

其次,这里会报错是这样的。
你的变量A在for (int i = a - 1; i < a + 1; i++)循环体出现之前声明了,但是还没有初始化,此时直接调用A的话是会报错的,这个需要明白。然后return(A)出现在for (int i = a - 1; i < a + 1; i++)循环体外边,正常逻辑,变量A在循环体里边会被初始化,然后走return(A)是OK的。
但是编译器会考虑你的程式假如a和i的初值导致逻辑不走循环体的情况,这时候等于说是char A='';然后直接不走循环走return(A),此时就会出错。
追问
char A='';之后会提示出错“空字符”
追答
刚查了资料,是我之前的理解错了。互相学习了。
char是字符类型,char A='';本身就会编译报错的。因为根本就没有''这个字符···
char可以存放一个是16位的Unicode字符,’a‘、’b‘···'1'、’2‘等等都是合法的,其它类似’\0‘这类的字符也是允许的,而’123‘、’abc‘之类的表示已经超出了字符表示的长度,是不行的。实际上'\0'表示的就是我们理解的空字符,而不是直接使用'',’‘应该是不被允许的。
回到你的问题上,之前的报错是因为char对象没有初始化,需要赋初值,char A=’‘;是错误写法,改成char A='\0';试试。
印礼梁承基
2019-06-10 · TA获得超过3817个赞
知道大有可为答主
回答量:3114
采纳率:34%
帮助的人:212万
展开全部
你的数组没有初始化
int[]
num;需要改成int[]
num=new
int[1000];这种格式(因为不清楚会有多少个数字,所以暂定1000)
同样后面的for
(int
i
=
0;
i
<=
num.Length-1;
i
+=5)
就需要改成
for
(int
i
=
0;
i
<k;
i
+=5)
实际上这种不定长的数据并不适合用数组的,可以用诸如
List<int>
list=new
List<int>();
然后在
if
(i
%
7
==
0)的时候就可以用
list.Add(i);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
衅魄ul
2014-08-13 · 超过53用户采纳过TA的回答
知道答主
回答量:123
采纳率:100%
帮助的人:101万
展开全部
string name1 = “”;
string name2 = “”;
int age1 = 0;
int age2 = 0;
定义变量是直接初始化,养成好的习惯可以减少很多不必要的错误。
追问
char类型初始化是char A=‘’么?我这么做了之后还是有问题
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Sweet丶奈何
高粉答主

2015-11-05 · 每个回答都超有意思的
知道大有可为答主
回答量:2.8万
采纳率:82%
帮助的人:4787万
展开全部
出错代码:
public string XMLStartPosion()
{
string path2;
XmlReader xr = XmlReader.Create(@"E:\单元项目\Explorer\Explorer\XMLPath.xml");
if (xr.Read())
{
if (xr.NodeType == XmlNodeType.Element)
{
path2 = (string)xr.Value;
Console.WriteLine(path2);
}
}
return path2;
}
在定义变量时进行初始化是个好习惯。
改错如下string path2="";
具体实例是使用XMLReader读取XML文件中存储的文件夹路径,此处只记载出错部分。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xuebaotuxi
2014-08-13 · TA获得超过1.2万个赞
知道大有可为答主
回答量:4196
采纳率:85%
帮助的人:1047万
展开全部
改一下,给char A=‘’;看看
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式