Console.WriteLine ("Enter the number of book to delete (1 to {0})", amount);
int posToDelete = Convert.ToInt32 (Console.ReadLine ())-1;
for (int i = posToDelete; i < amount - 1; i++)
b [i] = b [i + 1];
amount--;
// hi! i am new to programming... could anyone please explain this to me in detail
// * readline之后-1的用法是什么 // *解释我的循环plz
//link of the question
//http://practiceexercisescsharp.blogspot.com.es/2013/05/411-books-database.html
答案 0 :(得分:1)
数组从0开始。 例如:有一个数组b包含4个元素。
b[4] = {1,2,3,4};
因此b[0]
为1
而b[3]
为4
。
没有b[4]
。
如果要删除第二项(哪个元素为2
),则应删除b[1]
。
所以职位是1
这就是我们在readline之后使用-1
的原因。
for (int i = posToDelete; i < amount - 1; i++)
{
b [i] = b [i + 1];
amount--;
}
int = posToDelete
是我们要删除的项目的位置
我们使用下一个项目来替换它
这是b[i] = b[i+1];
因为我们删除了一个项目,所需金额为-1
;
我们还使用b[4]
例如:
如果我们删除2
最初:[1,2,3,4]
amount=4
;
循环开始:[1,2,3,4] posDelete
为1
,amount
为3
;
b[1]=b[2];
我们使用3
替换2
;
b[2]=b[3];
我们使用4
替换3
;
i
正在增加,直到i
为3
;循环结束
新数组为[1,3,4]
。
答案 1 :(得分:0)
您图书数组的indexer
可能是以下布局:
book[0] = "Book1" //Where user inputs 1 and then subtract 1 from it to access index 0
请考虑以下示例:
book[0] = "Book1" //Book input is 1 less 1 = index of 0
book[1] = "Book2" //Book input is 2 less 1 = index of 1
book[2] = "Book3" //Book input is 3 less 1 = index of 2
当然,删除这本书的逻辑是有问题的,因为我们不确定这本书是如何在Arrays
或Collections.
中安排的。但在您的情况下,您指的是位置所以可以说位置1是
等于索引0 。