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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 杨深 中级黑马   /  2012-11-26 15:38  /  2221 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1.             //定义字符串
  2.             Console.WriteLine("输入字符串");
  3.             string s = Console.ReadLine();
  4.             char[] str = s.ToCharArray();
  5.             for (int i = 0; i < str.Length; i++)//遍历
  6.             {
  7.                 if (str[i] == 'e')
  8.                 {
  9.                     Console.WriteLine("字符串的第{0}位出现e", i);
  10.                 }
  11.             }
  12.             Console.ReadKey();
复制代码
按照代码输出的话总是少一位,比如本来是第二位出现的,却输出是第一位,所以我写成 Console.WriteLine("字符串的第{0}位出现e", i+1);,不知道的上面截图的错误出在哪?

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 神马都是浮云

查看全部评分

7 个回复

倒序浏览
下标(索引):为str[0],str[1],str[2],str[3]索引是从0开始的 ,当你("字符串的第{0}位出现e", i)写成i时,这时你的i值为4,str[4]是不存在的
回复 使用道具 举报
图片里的错误,是for里判断句直接用小于长度就行,跟你后面遇到的问题是一个原因,
数组下标是从0开始的,
回复 使用道具 举报
1、数组的下标是从0开始的,但是是不能取到str.Length,在你的截图中当i取str.Length时就会引发异常
2、将for (int i =1; i < =str.Length; i++)这句代码改成for (int i = 0; i < str.Length; i++)就可以了
回复 使用道具 举报
取数组元素前先判断当前index是否大于等于数组的length即可
回复 使用道具 举报
怎么能犯基础错误{:2_38:}
数组下标是从0开始的,你应该写for(int i=0;i<str.Length;i++)
另外,str.length 推荐写到for循环前面,这样可以提高效率。
比如:
  1. int len = str.Length;
  2. for(int i=0;i<len;i++)
  3. {
  4.     代码块。。。。
  5. }
复制代码
回复 使用道具 举报
黑马-项泽宇 发表于 2012-11-26 18:00
怎么能犯基础错误
数组下标是从0开始的,你应该写for(int i=0;i

对,len放到外面确实提高效率
回复 使用道具 举报
for循环的判断条件多了一个=号,下面的就没问题。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马