0
我正在研究c#visual studio中的一個項目,其中我試圖製作一個保齡球計算器。我爲包含throw1和throw2的幀做了一個類。我首先用一個按鈕填充一組類,並在遊戲完成後計算分數。當我去計算分數它告訴我我有空值。以下是我的表單代碼類是 類框架 { public int intThrow1; public int intThrow2; }C#保齡球計算器。返回null的數組數組
的主要形式是
public partial class Form1 : Form
{
frames[] frame = new frames[11];
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void button1_Click(object sender, EventArgs e)
{
int intFrst = int.Parse(textBox1.Text);
int intScnd = int.Parse(textBox2.Text);
if (lbxScorecard.Items.Count <= 21)
{
int intIndx = 0;
if (intFrst == 10)
{
frame[intIndx] = new frames();
frame[intIndx].intThrow1 = intFrst;
frame[intIndx].intThrow2 = 0;
lbxScorecard.Items.Add(frame[intIndx].intThrow1);
lbxScorecard.Items.Add(frame[intIndx].intThrow2);
intIndx += 2;
}
else
{
frame[intIndx] = new frames();
frame[intIndx].intThrow1 = intFrst;
frame[intIndx].intThrow2 = intScnd;
lbxScorecard.Items.Add(frame[intIndx].intThrow1);
lbxScorecard.Items.Add(frame[intIndx].intThrow2);
intIndx++;
}
}
else
{
MessageBox.Show("max throws");
}
}
private void button2_Click(object sender, EventArgs e)
{
int intScore = 0;
for (int index = 0; index <= 11; index++)
{
if (frame[index].intThrow1 == 10 && index < 9) // here is where it throws a null exception stating the index may be empty
{
if (frame[index + 1].intThrow1 != 10)
{
intScore = intScore + frame[index].intThrow1 + frame[index + 1].intThrow1 + frame[index + 1].intThrow2;
}
else if (frame[index].intThrow1 == 10)
{
intScore = intScore + frame[index].intThrow1 + frame[index + 1].intThrow1 + frame[index + 2].intThrow1;
}
}
else if (frame[index].intThrow1 + frame[index].intThrow2 == 10 && index < 9) //it was throwing the same exception here until i added && index<9 in the if statements.
{
intScore = intScore + frame[index].intThrow1 + frame[index].intThrow2 + frame[index + 1].intThrow1;
}
else
{
intScore = intScore + frame[index].intThrow1 + frame[index].intThrow2;
}
}
MessageBox.Show(intScore.ToString());
}
}
謝謝你的迴應。我認爲陣列需要有一個最大幀數的限定。也不會我的循環與索引計數器實例化每個按鈕點擊一個新的框架[索引]? – abrunette89
你在'button1_Click'中的循環會這樣做。但正如我所說的,因爲你在'button2_Click'內再次聲明'frame' **,那麼你不使用在'button1_Click'內初始化的類變量'frame'。 – Idos
噢,是的,我忘了刪除之前,我發佈它我得到的錯誤之前,並認爲這將修復它大聲笑然後我來到這裏 – abrunette89