A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 陈培茹 中级黑马   /  2013-4-15 19:43  /  2420 人查看  /  16 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

帮忙看看我写的程序有哪里不对吧?初学者,莫笑话{:soso_e121:}

捕获.PNG (14.59 KB, 下载次数: 41)

捕获.PNG

16 个回复

倒序浏览
我知道正确的写法是这样子,但不明白我写的错在哪里了。莫笑话{:soso_e150:}

捕获1.PNG (15.67 KB, 下载次数: 50)

捕获1.PNG

评分

参与人数 1技术分 +1 收起 理由
杞文明 + 1

查看全部评分

回复 使用道具 举报
嘿``  差点说你代码没错了。
第一个错误是因为 你直接打印,如果数字大于0的时候会打印2次。
第二个对了  是碰巧。
你if..else语句得多理解了。
你应该这样写:
if( num  > 0 ) num = num +1;
else if( num < 0 ) num = num - 1;
....数组我简化了。。
回复 使用道具 举报
殇_心。 发表于 2013-4-15 19:58
嘿``  差点说你代码没错了。
第一个错误是因为 你直接打印,如果数字大于0的时候会打印2次。
第二个对了   ...

恩,谢谢。不过if-else我写的为什么错呀:P
回复 使用道具 举报
陈培茹 发表于 2013-4-15 20:31
恩,谢谢。不过if-else我写的为什么错呀

因为if开头就是一个语句了。
你写的
if( .. )
if( .. )
else ( .. )
语法是没问题。但是逻辑上是有问题的。
因为这个条件本来是一个语句里面的。
结果被你分成了2个语句。  现在稍懂些了么?  可能我这个表达能力不行```
罪过。。

评分

参与人数 1技术分 +1 收起 理由
杞文明 + 1

查看全部评分

回复 使用道具 举报
就拿10举例,10>0打印一次,出11,然后10<0不成立,走else语句,就又打印一次,出10,你可以在语句里面加上break或者continue语句嘛
回复 使用道具 举报
本帖最后由 张林杰 于 2013-4-15 21:27 编辑

楼上说得都对,楼主的代码应该改为如下这样,使用if-else-if语句,
错误原因是你对数组中的每个元素都进行了两次条件判断,比如对于第一个if语句,当i=0时,10>0, 条件成立,输出11; 接下来还要判断第二个if语句,10<0, 条件不成立,执行else语句 再次输出,输出的值为10,这样就产生了错误,你自己可以单步调试 看看
  1.         static void Main(string[] args)
  2.         {
  3.             int[] number = new int[] { 10, -12, 16, 0, 9, 32 };
  4.             for (int i = 0; i < number.Length; i++)
  5.             {
  6.                 if (number[i] > 0)
  7.                 {
  8.                     Console.Write("{0} ", number[i] + 1);
  9.                 }
  10.                 else if (number[i] < 0)
  11.                 {
  12.                     Console.Write("{0} ", number[i] - 1);
  13.                 }
  14.                 else
  15.                 {
  16.                     Console.Write("{0} ", number[i]);
  17.                 }
  18.             }
  19.             Console.ReadKey();
  20.         }
复制代码

评分

参与人数 1技术分 +1 收起 理由
杞文明 + 1

查看全部评分

回复 使用道具 举报
熊鑫 中级黑马 2013-4-15 21:13:35
8#
大家都是出初学者,虽然我还没有学到这里。但是题目的意思是让你输出一个数组。你却输出了一连串的数字。
回复 使用道具 举报
石国庆 发表于 2013-4-15 20:49
就拿10举例,10>0打印一次,出11,然后10

恩恩,懂啦啦啦!!!谢谢谢谢!!!
回复 使用道具 举报
殇_心。 发表于 2013-4-15 20:39
因为if开头就是一个语句了。
你写的
if( .. )

懂啦懂啦!!!晕死啦,之前总这昂写!谢谢谢谢
回复 使用道具 举报
张林杰 发表于 2013-4-15 21:11
楼上说得都对,楼主的代码应该改为如下这样,使用if-else-if语句,
错误原因是你对数组中的每个元素都进行 ...

恩恩额,懂啦,谢谢!:hug:
回复 使用道具 举报
熊鑫 发表于 2013-4-15 21:13
大家都是出初学者,虽然我还没有学到这里。但是题目的意思是让你输出一个数组。你却输出了一连串的数字。 ...

恩,谢谢啦,继续学习
回复 使用道具 举报
else 是跟着最近的一个if成对的 ,所以你的语句在大于0的时候,会执行两次if语句的判断,一个是第一if中的语句,一个是else中的语句;,在小于0的时候会执行第二if语句中的代码;等于0的时候会执行一次else中的语句
你应该使用if-else-if的结构,让else和第一个if成对。
回复 使用道具 举报
zerochen46 发表于 2013-4-15 21:36
else 是跟着最近的一个if成对的 ,所以你的语句在大于0的时候,会执行两次if语句的判断,一个是第一if中的 ...

恩恩谢谢啦
回复 使用道具 举报
就说你的错误吧,最明显的就是你没有改变数组中的元素而只改变了输出结果;
其次就是你的代码写错了
if-else语句中,else会自动与它之前的一个if配对,你的代码中
if(number[i] > 0){  语句块1 }
if(number[i] <0){  语句块2}
else{ 语句块3 }
首先判断number[i] > 0如果成立执行语句块1之后再往后执行,不成立跳过语句块1再往后执行,接着判断number[i] <0,成立执行语句块2,不成立执行语句块3,就是说如果number[i] > 0也会执行语句块3;
if-else一般用于就只有两种情况的时候,多种可能的情况用
if() {}
else if(){}
……
else {}
回复 使用道具 举报
熊薇 发表于 2013-4-15 21:47
就说你的错误吧,最明显的就是你没有改变数组中的元素而只改变了输出结果;
其次就是你的代码写错了
if-els ...

恩恩,经过这么解释,已经清楚了!谢谢啦:)
回复 使用道具 举报
else和离它最近的if匹配,所以应该使用
if()
{

}
else if()
{

}
else
{

}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马