ArgumentOutOfRange异常C#
我正在做我的家庭作业,我必须做一个程序,将简单的字母从一个文件(如E和F)扩展到连续的产品,也在文件夹中给出,如E+T E-F等。无论如何,下面显示的代码给了我一个参数超出范围的异常。我用java编写了相同的代码,一切都很好。我不知道为什么在C中,它给了我这个例外。请给我一些建议 我忘了放我正在读取的文件: EFT a+() E E+T | E-T | T T*F | T/F | F a |(E)ArgumentOutOfRange异常C#,c#,streamreader,textreader,C#,Streamreader,Textreader,我正在做我的家庭作业,我必须做一个程序,将简单的字母从一个文件(如E和F)扩展到连续的产品,也在文件夹中给出,如E+T E-F等。无论如何,下面显示的代码给了我一个参数超出范围的异常。我用java编写了相同的代码,一切都很好。我不知道为什么在C中,它给了我这个例外。请给我一些建议 我忘了放我正在读取的文件: EFT a+() E E+T | E-T | T T*F | T/F | F a |(E) public void generare(){ 字符串N=null; 字符串T=null; 字符串
public void generare(){
字符串N=null;
字符串T=null;
字符串S=null;
字符串[]P=null;
TextReader tr=新的StreamReader(“dateIntre.txt”);
尝试
{
N=tr.ReadLine();
T=tr.ReadLine();
S=tr.ReadLine();
P=新字符串[N.长度];
对于(int i=0;i=0&&ok==false;i--)
{
对于(int j=0;j”;
}
}
}
捕获(FileNotFoundException)
{
控制台.WriteLine(“Eroare,fisierul nu exista!”);
}
Console.WriteLine();
}
将代码从Java移植到c#时,这是一个常见错误
Java中的子字符串接受开始和结束参数,但在c中,它们是开始和长度
但为什么在java中工作而在这里不工作呢?我很困惑
如果有疑问,请阅读。在Java中,substring
的2参数重载采用开始索引和结束索引。在.NET中,第二个参数是要获取的字符数,而不是结束索引
所以你可能想要
String s2 = iesire.Substring(i + 1, iesire.Length - i - 1);
或者更简单地说,只需使用1参数版本,它从指定索引开始获取所有字符:
String s2 = iesire.Substring(i + 1);
(我也会在Java中使用它…)
但从根本上说,退一步,找出为什么你不能自己解决这个问题是值得的。。。即使您以前错过了:
- 查看代码中引发异常的行
- 查看实际抛出异常的方法(本例中为
)String.Substring
- 仔细查看异常消息(这是一个非常好的提示!)以及任何嵌套的异常
- 仔细阅读相关方法的文档,尤其是描述参数和异常的部分
String s2 = iesire.Substring(i + 1);