黑马程序员技术交流社区

标题: int数组重组“异常” [打印本页]

作者: 指尖舞者    时间: 2014-6-30 07:46
标题: int数组重组“异常”
本帖最后由 指尖舞者 于 2014-7-1 09:39 编辑

题目:重组一个int数组,让该数组元素,若为正则值+1,为负则值-1,为零则不变。

  1. int[] integer = { 10, 22, 45, -7, 0,54, 99, -88, -25 };

  2. Console.WriteLine("新数组为a");

  3. for (int i = 0; i < integer.Length; i++)      //for循环可以无视,没有问题

  4. {

  5. if (integer[i] > 0)

  6. {

  7. integer[i] += 1;

  8. }

  9. else if (integer[i] == 0)

  10. {

  11. }

  12. else

  13. {

  14. integer[i] -= 1;

  15. }

  16. Console.Write(integer[i]+" ");         //正常结果

  17. //Console.Write(integer[i]+','+" "); //这里出问题了

  18. }

  19. Console.WriteLine();

  20. Console.ReadKey();</P>
复制代码




输出的时候,本来想让每个元素之间有个逗号间隔,就用了 如备注的语句 但是输出结果完全两样了





2.jpg (8.96 KB, 下载次数: 52)

异常输出结果

异常输出结果

1.jpg (9.69 KB, 下载次数: 67)

正确输出结果

正确输出结果

作者: dugubaitian    时间: 2014-6-30 09:43
本帖最后由 dugubaitian 于 2014-6-30 14:07 编辑

你好!  你这个错误是这样的: Console.Write(integer+','+" ");  把单引号换成双引号,因为+是字符串的连接,写成‘,’就相当于interger+','进行算术运算,因为+只是累加字符串的,其他的系统默认的就是计算了像这道题,‘,’转换成int数是44(自己可以调试试一下),    所以改成“,”就好了!!  希望可以帮助到你                      你可以自己进行试验下  int  i=(int)'',;看一下i的值就会看见是44了。   
作者: 渐渐的起飞    时间: 2014-6-30 09:55
单引换双引,  就楼上所说的
作者: 小郭zaiheima    时间: 2014-6-30 10:25
一楼很强大呦。。试试改成“,”果然如此
作者: 专属第三    时间: 2014-6-30 11:02
那么把数组的元素 ToString 一下是不是也可以的
作者: 天佑の清清    时间: 2014-6-30 11:21
这个
//Console.Write(integer[i]+','+" "); //这里出问题了       确实出问题了
改成    “+”   
你试试
作者: 指尖舞者    时间: 2014-6-30 12:33
本帖最后由 指尖舞者 于 2014-6-30 12:40 编辑
天佑の清清 发表于 2014-6-30 11:21
这个
//Console.Write(integer+','+" "); //这里出问题了       确实出问题了
改成    “+”   


我那中间有个空格的  是间隔一下而已  我主要是多加了个“,”  然后出问题了

应该是1楼说的那样  单引号问题 我回去试试

作者: 指尖舞者    时间: 2014-6-30 12:34
dugubaitian 发表于 2014-6-30 09:43
你好!  你这个错误是这样的: Console.Write(integer+','+" ");  把单引号换成双引号,因为+是字符串的连 ...

soga  貌似还很是  我回去试试
作者: dugubaitian    时间: 2014-6-30 14:17
指尖舞者 发表于 2014-6-30 12:34
soga  貌似还很是  我回去试试

嗯  你可以自己实验下  int i=(int)',';看下i的值,就会看见是44了   其实系统把这的+当作算数运算符来看了  如果写成“,”,这表示的是字符串,C#语言中,+两边如果有一项是字符串的话+就会被当作连接符来用了   否则当作算数运算符用!!
作者: czwanglei    时间: 2014-7-1 01:04
当有人给你回复后,请及时把帖子编辑为提问结束,这样版主才给你加技术分
作者: 指尖舞者    时间: 2014-7-1 09:38
czwanglei 发表于 2014-7-1 01:04
当有人给你回复后,请及时把帖子编辑为提问结束,这样版主才给你加技术分 ...

我知道 但是要等我验证了 回答的是否解决问题 我才来结束  我们又不是走形式  对吧
作者: 指尖舞者    时间: 2014-7-1 09:40
dugubaitian 发表于 2014-6-30 14:17
嗯  你可以自己实验下  int i=(int)',';看下i的值,就会看见是44了   其实系统把这的+当作算数运算符来看 ...

嗯 好了昨天回去试了  可以  这就结束提问了  多谢
作者: 麦田怪圈    时间: 2014-7-12 20:31
学习了!呵呵




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2