| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1059 人关注过本帖
标题:一个简单的C#,可我总不行,哪里错了请指教~~
只看楼主 加入收藏
夏色沙漏
Rank: 1
等 级:新手上路
帖 子:97
专家分:0
注 册:2004-11-12
收藏
 问题点数:0 回复次数:15 
一个简单的C#,可我总不行,哪里错了请指教~~

题目是输入一个字符串,把其中的“no”变成"yes"~~ using System;

namespace ConsoleApplication2 { /// <summary> /// Class1 的摘要说明。 /// </summary> class Class1 { /// <summary> /// 应用程序的主入口点。 /// </summary> [STAThread] static void Main(string[] args) { string gigi; int flag=0; char[] zizi=new char[20]; char p='n',q='o',r='y',s='e',t='s'; gigi=Console.ReadLine(); gigi=gigi.ToLower(); zizi=gigi.ToCharArray(); for(int i=0;i<gigi.Length;i++) { if(zizi[i]==p) { i=i+1; if(zizi[i]==q) { flag=flag+1; for(int j=gigi.Length;j>i+1;j--) { zizi[j]=zizi[j-1]; } zizi[i+1]=t; zizi[i]=s; zizi[i-1]=r; } } } for(int k=0;k<(gigi.Length+flag);k++) { Console.WriteLine("{0}",zizi[k]); } // // TOD 在此处添加代码以启动应用程序 // } } } 编译的时候老提示异常~~~~是 zizi[j]=zizi[j-1];这行~~~~~ 我也不懂为什么~~~~ 请各位老大帮忙下~~ 指教下什么问题~~

搜索更多相关主题的帖子: 指教 
2005-01-05 15:16
夏色沙漏
Rank: 1
等 级:新手上路
帖 子:97
专家分:0
注 册:2004-11-12
收藏
得分:0 

using System;

namespace ConsoleApplication2 { /// <summary> /// Class1 的摘要说明。 /// </summary> class Class1 { /// <summary> /// 应用程序的主入口点。 /// </summary> [STAThread] static void Main(string[] args) { string gigi; int flag=0; char[] zizi=new char[20]; char p='n',q='o',r='y',s='e',t='s';//no和yes gigi=Console.ReadLine(); gigi=gigi.ToLower(); //全部变成小写的 zizi=gigi.ToCharArray(); //把gigi给zizi数组 for(int i=0;i<gigi.Length;i++) { if(zizi[i]==p) //判断有没有n开的 { i=i+1; //i+1得到下一个字符 if(zizi[i]==q) //判断n的下一位是不是o { flag=flag+1; //如果是o标志位加1 for(int j=gigi.Length;j>i+1;j--)//把zizi数组往后移动一位因为yes比 no大一位 { zizi[j]=zizi[j-1]; } zizi[i+1]=t;//这三个付值实现yes进数组zizi zizi[i]=s; zizi[i-1]=r; } } } for(int k=0;k<(gigi.Length+flag);k++)//把长度加上标志位就是现在zizi数组中字符的大小了 { Console.WriteLine("{0}",zizi[k]); } // // TOD 在此处添加代码以启动应用程序 // } } } 忘了标住解释了,唉,这个编程习惯还没养好~~~

2005-01-05 15:22
live41
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:67
帖 子:12442
专家分:0
注 册:2004-7-22
收藏
得分:0 
int j=gigi.Length  //越界了,j 已经过了数组极限,因为Length取的是元素总数,而数组是从0开始
2005-01-05 15:50
live41
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:67
帖 子:12442
专家分:0
注 册:2004-7-22
收藏
得分:0 
还有你的代码其实用string会更方便。
2005-01-05 15:51
夏色沙漏
Rank: 1
等 级:新手上路
帖 子:97
专家分:0
注 册:2004-11-12
收藏
得分:0 
怎么改呢????????//
在C中可以吧
我j是等于gigi.Length,我后面传值呀,不然要怎么把字符往后移?????????
怎么让他可以移动呢?????????
2005-01-05 15:55
无心细语
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2004-12-27
收藏
得分:0 
这个………………其实4句话就完了


string FirstString,SecondString;
FirstString=Console.ReadLine();
SecondString=FirstString.Replace("no","yes");
Console.WriteLine(SecondString);

晕啦
2005-01-05 16:01
夏色沙漏
Rank: 1
等 级:新手上路
帖 子:97
专家分:0
注 册:2004-11-12
收藏
得分:0 
程序还有错~~
我刚才看了,如果向后移动的话,应该  Length+1才是~~~
即只要执行了==o是对的就要再执行+1
我把gigi.Length=ch
然后让ch+1
下面也不用那个标志位了
但是还是不行~~
越界是什么??
int j=gigi.Length  //越界了,j 已经过了数组极限,因为Length取的是元素总数,而数组是从0开始
这个我们该怎么去弄解释明白下,谢谢~~~~
2005-01-05 16:04
夏色沙漏
Rank: 1
等 级:新手上路
帖 子:97
专家分:0
注 册:2004-11-12
收藏
得分:0 
以下是引用无心细语在2005-1-5 16:01:26的发言: 这个………………其实4句话就完了 string FirstString,SecondString; FirstString=Console.ReadLine(); SecondString=FirstString.Replace("no","yes"); Console.WriteLine(SecondString);
晕,我才学前面啦,Replace这个还没学~~~
2005-01-05 16:04
无心细语
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2004-12-27
收藏
得分:0 
比如输入“no”
zizi数组定义是2个字符,zizi[i+1]=t这句就肯定越界了

晕啦
2005-01-05 16:19
夏色沙漏
Rank: 1
等 级:新手上路
帖 子:97
专家分:0
注 册:2004-11-12
收藏
得分:0 
以下是引用无心细语在2005-1-5 16:19:14的发言: 比如输入“no” zizi数组定义是2个字符,zizi[i+1]=t这句就肯定越界了

没看懂~~ 我现在t='s' 也就是说他肯定一个字符了,我现在是一个字符一个字符换,又不是一堆换~~~ 一个空间放一个字符越界了?????????? 麻烦能解释再清楚点么??我真的还看不懂 刚才我特定在上面 using System;

namespace ConsoleApplication2 { /// <summary> /// Class1 的摘要说明。 /// </summary> class Class1 { /// <summary> /// 应用程序的主入口点。 /// </summary> [STAThread] static void Main(string[] args) { string gigi; int flag=0,ch; char[] zizi=new char[20]; char p='n',q='o',r='y',s='e',t='s';//no和yes gigi=Console.ReadLine(); gigi=gigi.ToLower(); //全部变成小写的 gigi=gigi.PadRight(3); zizi=gigi.ToCharArray(); //把gigi给zizi数组 gigi=gigi.TrimEnd(); ch=gigi.Length; for(int i=0;i<ch;i++) { if(zizi[i]==p) //判断有没有n开的 { i=i+1; //i+1得到下一个字符 if(zizi[i]==q) //判断n的下一位是不是o { flag=flag+1; //如果是o标志位加1 for(int j=ch+1;j>i+1;j--)//把zizi数组往后移动一位因为yes比 no大一位 { zizi[j]=zizi[j-1]; } zizi[i+1]=t;//这三个付值实现yes进数组zizi zizi[i]=s; zizi[i-1]=r; ch++; } } } for(int k=0;k<ch;k++)//把长度加上标志位就是现在zizi数组中字符的大小了 { Console.WriteLine("{0}",zizi[k]); } // // TOD 在此处添加代码以启动应用程序 // } } } 程序这样还是不行`~~~~~~ 看不懂越界这个概念~~

2005-01-05 16:28
快速回复:一个简单的C#,可我总不行,哪里错了请指教~~
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.047729 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved