使用 ToString() 执行 WriteLine 时出现 IndexOutOfRangeException
IndexOutOfRangeException when doing a WriteLine with ToString()
我是初学者,在尝试使此代码正常工作时正在寻求帮助。 "public override string ToString()" 方法不应该被触及,因为它是正确的。但是下面的代码returns出错了。我可能做错了什么?
Unhandled Exception: System.IndexOutOfRangeException: Array index is out of range.
at Jumppa..ctor (System.String nimi, System.String[] ajat, System.String[] paikat) [0x00000] in :0
at Jumppa.Main (System.String[] args) [0x00000] in :0
[ERROR] FATAL UNHANDLED EXCEPTION: System.IndexOutOfRangeException: Array index is out of range.
at Jumppa..ctor (System.String nimi, System.String[] ajat, System.String[] paikat) [0x00000] in :0
at Jumppa.Main (System.String[] args) [0x00000] in :0
Using System;
using System.Collections.Generic;
class Jumppa
{
public override string ToString()
{
string jumppa = nimi+"\najat:\n";
for (int i=0; i < ajat.Length; i++)
{
jumppa+= ajat[i] + "\n";
}
jumppa += "\npaikat:\n";
for (int i=0; i < paikat.Length; i++)
{
jumppa+= paikat[i] + "\n";
}
return jumppa;
}
public string nimi;
public string[] ajat=new string[2];
public string[] paikat=new string[2];
public Jumppa(string nimi,string[] ajat,string[]paikat)
{
this.nimi = nimi;
this.ajat[2] = ajat[2];
this.paikat[2] = paikat[2];
}
public Jumppa jumppa(Jumppa J1)
{
return this;
}
static void Main(string[] args)
{
//System.Collections.ArrayList jumppa = new System.Collections.ArrayList();
Jumppa[] J1=new Jumppa[3];
J1[0] = new Jumppa ("junior",new[] {"Wedn 9:30", "Frid 9:30"},new[]{"Gym", "Basement"});
J1[1] = new Jumppa ("adult",new[] {"Wedn 10:30", "Frid 10:30"},new[]{"Gym", "Basement"});
J1[2] = new Jumppa ("oldlady",new[] {"Wedn 11:30", "Frid 11:30"},new[]{"Gym", "Basement"});
//jumppa.Add(J1);
//for (int i=0; i<2; i++)
//{
Console.WriteLine(J1[0].jumppa(J1[0]));
//}
return;
}
}
问题出在这些行上:
this.ajat[2] = ajat[2];
this.paikat[2] = paikat[2];
ajat
和 paikat
初始化为长度 2,因此有效索引为 0 和 1。访问索引 2 会导致 IndexOutOfRangeException
。我怀疑你真正想做的是:
this.ajat = ajat;
this.paikat = paikat;
我是初学者,在尝试使此代码正常工作时正在寻求帮助。 "public override string ToString()" 方法不应该被触及,因为它是正确的。但是下面的代码returns出错了。我可能做错了什么?
Unhandled Exception: System.IndexOutOfRangeException: Array index is out of range. at Jumppa..ctor (System.String nimi, System.String[] ajat, System.String[] paikat) [0x00000] in :0 at Jumppa.Main (System.String[] args) [0x00000] in :0 [ERROR] FATAL UNHANDLED EXCEPTION: System.IndexOutOfRangeException: Array index is out of range. at Jumppa..ctor (System.String nimi, System.String[] ajat, System.String[] paikat) [0x00000] in :0 at Jumppa.Main (System.String[] args) [0x00000] in :0
Using System;
using System.Collections.Generic;
class Jumppa
{
public override string ToString()
{
string jumppa = nimi+"\najat:\n";
for (int i=0; i < ajat.Length; i++)
{
jumppa+= ajat[i] + "\n";
}
jumppa += "\npaikat:\n";
for (int i=0; i < paikat.Length; i++)
{
jumppa+= paikat[i] + "\n";
}
return jumppa;
}
public string nimi;
public string[] ajat=new string[2];
public string[] paikat=new string[2];
public Jumppa(string nimi,string[] ajat,string[]paikat)
{
this.nimi = nimi;
this.ajat[2] = ajat[2];
this.paikat[2] = paikat[2];
}
public Jumppa jumppa(Jumppa J1)
{
return this;
}
static void Main(string[] args)
{
//System.Collections.ArrayList jumppa = new System.Collections.ArrayList();
Jumppa[] J1=new Jumppa[3];
J1[0] = new Jumppa ("junior",new[] {"Wedn 9:30", "Frid 9:30"},new[]{"Gym", "Basement"});
J1[1] = new Jumppa ("adult",new[] {"Wedn 10:30", "Frid 10:30"},new[]{"Gym", "Basement"});
J1[2] = new Jumppa ("oldlady",new[] {"Wedn 11:30", "Frid 11:30"},new[]{"Gym", "Basement"});
//jumppa.Add(J1);
//for (int i=0; i<2; i++)
//{
Console.WriteLine(J1[0].jumppa(J1[0]));
//}
return;
}
}
问题出在这些行上:
this.ajat[2] = ajat[2];
this.paikat[2] = paikat[2];
ajat
和 paikat
初始化为长度 2,因此有效索引为 0 和 1。访问索引 2 会导致 IndexOutOfRangeException
。我怀疑你真正想做的是:
this.ajat = ajat;
this.paikat = paikat;