gpt4 book ai didi

javascript - 在 Javascript 中集成嵌套的 for 和 if 循环时遇到问题

转载 作者:行者123 更新时间:2023-12-03 04:30:02 25 4
gpt4 key购买 nike

我正在尝试运行图书馆 checkin / checkout 系统的模拟。我已经制作了所有对象,但执行模拟本身的循环遇到了问题。我的代码:

伪代码:

//while loop or for loop for 90 days
//For loop over catalog
//forloop over patrons
//Check if available , if so check book out
//If not available check book back in
//check checking back in check to see if book is overdue and if so add a fine
//When down loop over patrons to see their fees

我在该循环中的尝试

for (var j = 0; j < 90; j++) {            
for (var i = 0; i < catalog.length; i++) {
for (var k = 0; k < patrons.length; k++) {
if (books[k].Available = true) {
books[k].checkOut = true; }
else {
books[k].Available = true;
}
if (books[k].isOverdue = true) {
fine = fine + 5.00;
}
}
}
patrons[j].fine = fine;
j++;
}

所有代码

    var Book = function(title, Available, publicationDate, checkoutDate, callNumber, Authors) {
this.title = title;
this.Available = Available;
this.publicationDate = publicationDate;
this.checkoutDate = checkoutDate;
this.callNumber = callNumber;
this.Authors = Authors;
};

var Author = function(firstName, lastName) {
this.firstName = firstName;
this.lastName = lastName;
};

var Patron = function(firstName, lastName, libCardNum, booksOut, fine) {
this.firstName = firstName;
this.lastName = lastName;
this.libCardNum = libCardNum;
this.booksOut = booksOut;
this.fine = fine;
};

Book.prototype.checkOut = function() {
this.Available = false;
var temp = new Date(1000000000);
var date = new Date() - temp;
var res = new Date(date);
this.checkoutDate = res;
};

Book.prototype.isOverdue = function() {
var singleDay = 1000 * 60 * 60 * 24;
var todayDate = new Date().getTime();
var difference = todayDate - this.checkoutDate.getTime();
if (Math.round(difference / singleDay) >= 14) {
return true;
}
return false;
};

Patron.prototype.read = function(book) {
this.booksOut.add(book);
}

Patron.prototype.read = function(book) {
this.booksOut.remove(this.booksOut.length);
}

var authors = [];
authors[0] = new Author("Auth", "One");
authors[1] = new Author("AutL", "Two");

var catalog = [];
catalog[0] = new Book('Bk1', true, new Date(2001, 1, 21), new Date(), 123456, authors);
catalog[1] = new Book('Bk2', true, new Date(2002, 2, 22), new Date(), 987656, authors);
catalog[2] = new Book('Bk3', true, new Date(2003, 3, 23), new Date(), 092673, authors);
catalog[3] = new Book('Bk4', true, new Date(2004, 4, 24), new Date(), 658342, authors);
catalog[4] = new Book('Bk5', true, new Date(2005, 5, 25), new Date(), 345678, authors);

var patrons = [];
patrons[0] = new Patron('Pat1', 'Wat', 1, catalog, 0.00);
patrons[1] = new Patron('Pat2', 'Wot', 1, catalog, 0.00);
patrons[2] = new Patron('Pat3', 'Wit', 1, catalog, 0.00);
patrons[3] = new Patron('Pat4', 'Wet', 1, catalog, 0.00);
patrons[4] = new Patron('Pat5', 'Wut', 1, catalog, 0.00);

var j = 0;

//while loop or for loop for 90 days
//For loop over catalog
//forloop over patrons
//Check if available , if so check book out
//If not available check book back in
//check checking back in check to see if book is overdue and if so add a fine
//When down loop over patrons to see their fees

for (var j = 0; j < 90; j++) {
for (var i = 0; i < catalog.length; i++) {
for (var i = 0; i < patrons.length; i++) {
if (books[i].Available = true) {
books[i].checkOut = true; }
else {
books[i].Available = true;
}
if (books[i].isOverdue = true) {
fine = fine + 5.00;
}
}
}
patrons[j].fine = fine;
j++;
}

for (i = 0; i < patrons.length; i++) {
console.log(patrons[i].firstName + " has checked out the following books:");
for (j = 0; j < patrons[i].booksOut.length; j++) {
console.log(patrons[i].booksOut[j].title);
}
console.log(patrons[i].firstName + " has fine amount: $" + patrons[i].fine);
}

最佳答案

在代码中更改重复的变量名称 i 并且不要忘记添加 var 以免它们成为全局变量:

for (var j = 0; j < 90; j++) {            
for (var i = 0; i < catalog.length; i++) {
for (var n = 0; n < patrons.length; n++) {
if (books[n].Available = true) {
books[n].checkOut = true; }
else {
books[n].Available = true;
}
if (books[n].isOverdue = true) {
fine = fine + 5.00;
}
}
}
patrons[j].fine = fine;
j++;
}

for (var i = 0; i < patrons.length; i++) {
console.log(patrons[i].firstName + " has checked out the following books:");
for (var j = 0; j < patrons[i].booksOut.length; j++) {
console.log(patrons[i].booksOut[j].title);
}
console.log(patrons[i].firstName + " has fine amount: $" + patrons[i].fine);
}

关于javascript - 在 Javascript 中集成嵌套的 for 和 if 循环时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43530227/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com