[英]how to add value to array in the next postion
我正在構建一個像數碼相機一樣的小型應用,並且在我的照相功能上,我想向我的數組中插入一個隨機數(我成功做到了),我的問題是當我拍攝多張照片時,該值總是進入第一個位置。 我的代碼:
public override void TakePhoto()
{
Random rnd = new Random();
int photo = rnd.Next(1, 10);
for (int i = 0; i < 1; i++)
{
MemoryCard.buffer[i] = photo;
}
}
class Program
{
static void Main(string[] args)
{
DigitalCamera digitalCamera =
new DigitalCamera("kodak", 43, newMemoryCard, 3);
digitalCamera.TakePhoto();
digitalCamera.TakePhoto();
digitalCamera.TakePhoto();
}
}
每張照片后我如何跳到下一個位置?
您毫不客氣地說要將下一個值放在第一位。
查看您的代碼:
for (int i = 0; i < 1; i++)
{
MemoryCard.buffer[i] = photo;
}
i
總是0
要解決此問題,只需將i值保存到某個全局變量中,或將下一個索引接受為TakePhoto(...)
函數中的參數TakePhoto(...)
。
例:
int curindex = 0; //GLOBAL VARIABLE
public override void TakePhoto()
{
Random rnd = new Random();
int photo = rnd.Next(1, 10);
if(curindex < MemoryCard.buffer.Length) //IF CURINDEX LESS THE TOTAL ARRAY LENGTH
{
MemoryCard.buffer[curindex] = photo; //ASSIGN PHOTO IN CURRENTINDEX
curindex ++; //INCEREMENT CURRENTINDEX
}
}
buffer
變量的Length
來代替 TakePhoto
速度太快,因此始終使用相同的種子創建Random
,因此始終生成相同的“隨機數”。 而是將Random
實例作為參數傳遞給方法或使用字段變量。
public override void TakePhoto(Random rnd)
{
int photo = rnd.Next(1, 10);
for (int i = 0; i < MemoryCard.buffer.Length; i++)
{
MemoryCard.buffer[i] = photo;
}
}
現在始終使用相同的實例:
Random r = new Random();
DigitalCamera digitalCamera = new DigitalCamera("kodak", 43, newMemoryCard, 3);
digitalCamera.TakePhoto(r);
digitalCamera.TakePhoto(r);
digitalCamera.TakePhoto(r);
我認為對代碼進行以下修改可以解決您的問題:
class DigitalCamera
{
static int currentPhotoNumber = 0;
private Random rnd = new Random();
public override void TakePhoto()
{
int photo = rnd.Next(1, 10);
MemoryCard.buffer[currentPhotoNumber++] = photo;
}
}
class Program
{
static void Main(string[] args)
{
DigitalCamera digitalCamera = new DigitalCamera("kodak", 43, newMemoryCard, 3);
digitalCamera.TakePhoto();
digitalCamera.TakePhoto();
digitalCamera.TakePhoto();
}
}
您的代碼中存在邏輯錯誤:
for (int i = 0; i < 1; i++)
{
MemoryCard.buffer[i] = photo;
}
如果查看for循環變量,則循環從i = 0到i <1。 這基本上意味着該循環僅運行一次(對於i = 0)。
您可能需要每次增加i
MemoryCard.buffer[MemoryCard.numberofphotos] = photo;
MemoryCard.numberofphotos++;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.