- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在做作业,我必须做一个程序,将文件中的简单字母(如 E 和 F)扩展到连续的作品,也在文件夹中给出,如 E+T E-F 等。无论如何显示的代码下面给了我一个参数超出范围的异常。我用 Java 编写了相同的代码,一切正常。我不知道为什么在 C# 中它会给我这个异常。请给我一些建议!!
我忘记放入我正在读取的文件:
电汇
a+()
E
E+T|E-T|T
T*F|T/F|F
一个|(E)
public void generare(){
String N = null;
String T = null;
String S = null;
String[] P = null;
TextReader tr = new StreamReader("dateIntrare.txt");
try
{
N = tr.ReadLine();
T = tr.ReadLine();
S = tr.ReadLine();
P = new String[N.Length];
for (int i = 0; i < N.Length; i++)
{
P[i] = tr.ReadLine();
}
tr.Close();
Console.WriteLine("Neterminale: N = " + N);
Console.WriteLine("Terminale: T = " + T);
Console.WriteLine("Productii ");
for (int i = 0; i < P.Length; i++)
Console.WriteLine("\t" + P[i]);
Console.WriteLine("Start: S = " + S);
Boolean gata = false;
String iesire = S.Substring(0, S.Length);
Console.WriteLine("\nRezultat");
Console.Write("\t");
while ((gata == false) && (iesire.Length < 50))
{
Console.Write(iesire);
Boolean ok = false;
for (int i = iesire.Length - 1; i >= 0 && ok == false; i--)
{
for (int j = 0; j < N.Length && ok == false; j++)
if (N[j] == iesire[i])
{
String s1 = iesire.Substring(0, i);
String s2 = iesire.Substring(i + 1, iesire.Length); // HERE IS THE EXCEPTION TAKING PLACE
String inlocuire = P[N.IndexOf(iesire[i])];
String[] optiuni = null;
String[] st = inlocuire.Split('|');
int k = 0;
foreach (String now in st)
{
k++;
}
optiuni = new String[k];
st = inlocuire.Split('|');
k = 0;
foreach (string next in st)
{
optiuni[k++] = next;
}
Random rand = new Random();
int randNr = rand.Next(optiuni.Length);
String inlocuireRandom = optiuni[randNr];
iesire = s1 + inlocuireRandom + s2;
ok = true;
}
}
if (ok == false)
{
gata = true;
}
else
{
if (iesire.Length < 50)
Console.Write(" => ");
}
}
}
catch (FileNotFoundException)
{
Console.WriteLine("Eroare, fisierul nu exista!");
}
Console.WriteLine();
}
最佳答案
But why in java works and here not? I'm confused
如有疑问,请阅读 the documentation .在 Java 中,substring
的 2 参数重载采用起始索引和结束索引。在 .NET 中,第二个参数是要获取的字符数,不是结束索引。
所以你可能想要
String s2 = iesire.Substring(i + 1, iesire.Length - i - 1);
或者为了更简单,只使用 1 参数版本,它从指定索引开始获取所有字符:
String s2 = iesire.Substring(i + 1);
(我也会在 Java 中使用它...)
但从根本上说,值得退后一步,弄清楚为什么你不能自己解决这个问题......即使你之前错过了:
String.Substring
)关于c# - ArgumentOutOfRange 异常 C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12992835/
我正在做作业,我必须做一个程序,将文件中的简单字母(如 E 和 F)扩展到连续的作品,也在文件夹中给出,如 E+T E-F 等。无论如何显示的代码下面给了我一个参数超出范围的异常。我用 Java 编写
我一直在编写一个 Winforms 应用程序,用户可以在其中从组合框中选择内容。但是,当我运行该应用程序时,编译器会抛出 ArgumentOutOfRange 异常,因为索引为 -1。 代码: if
关闭。这个问题是not reproducible or was caused by typos .它目前不接受答案。 这个问题是由于错别字或无法再重现的问题引起的。虽然类似的问题可能是on-topi
我已经与这个异常(以及随后的严重崩溃)斗争了大约一天了。我在 Xamarin Forms 中有一个 ListView 可以对标题进行分组。就我从调用堆栈中收集到的信息而言,错误是由于分组而发生的。我通
我有一个带有单个 DataGridView 的表单。 DGV 绑定(bind)到 DataTable 并在表单加载约 32,000 条记录时填充。 如果用户向下拖动滚动条并在鼠标光标位于滚动条底部的向
我有这个代码: public BigInteger getNum() { BigInteger rtrnVal = 0; for (int a = _arr.Count; a > 0;
我维护一个在服务器环境中作为服务运行的应用程序。它是多线程的,每个线程根据任务队列工作。该任务队列只是一个以“作业类型”作为值的字符串列表。因此,虽然可能有多个线程正在运行,但每个线程都将是一个不同的
我是一名优秀的程序员,十分优秀!