gpt4 book ai didi

javascript - *日历程序* 无法为该日历程序编写循环以正确显示

转载 作者:行者123 更新时间:2023-11-29 14:40:05 25 4
gpt4 key购买 nike

我在尝试完成我的代码时遇到问题。我正在尝试获取代码以在几个不同的行中打印数组。它应该看起来像这样:

Calendar

好的,这是更新后的代码。我一直在努力,它越来越好!但是,我现在的问题是试图弄清楚我需要做什么才能在代码输出中当前“0”和“1”所在的位置创建空格。我想我只需要插入: calDaysOfWeek.unshift();或者可能: calDaysOfWeek.shift();我就是想不出把它放在哪里。如果我能解决这个问题,我应该能够减少我代码中的日期的缩写(例如 M 到星期一或 T 到星期二)。

/*Write a program called calendar.js that displays a calendar month 
for May 2012 as the month and year. You must use a loop. The format
of the month should be as shown below: Hint: You can't use console
log and print on the same line. Try storing the entire row as one
concatenated string and then displaying it. You must use loops for
this one. Do not just print the calendar as a series of console.log
statements!*/


calDaysOfWeek = [];
calDaysOfWeek.push("Sun", "Mon", "Tues", "Wed", "Thur", "Fri", "Sat");

var s = "MAY 2012\nS M T W T F S\n";

var numDaysOfWeek = calDaysOfWeek.length;
var firstDay = 2;
var numDaysOfMonth = 31;
var numWeeks = numDaysOfMonth/7;
for(var i = 0; i < numWeeks; i++) {
for(var j = 0; j < numDaysOfWeek; j++) {
s += i*numDaysOfWeek + j + ' ';
}
s += "\n";
}
if (firstDay != calDaysOfWeek[2]) {
calDaysOfWeek.push();
}
else if (calDaysOfWeek[30] != 31) {
calDaysOfWeek.pop();
}
else
console.log(s);

最佳答案

你这里有错误:

for(var i = 0; len = calDaysOfWeek.length; i < len; i++) 

应该是:

len = calDaysOfWeek.length; 

for(var i = 0; i < len; i++) {

}

现在,您需要使用此循环来填充您的字符串,而不是使用数组。所以:

var s = "";
len = calDaysOfWeek.length;

for(var i = 0; i < len; i++) {

}

但是你的循环只会从 0 到 6,因为你一周有 7 天。所以这几周你需要另一个循环。您无法轻松计算的是该月的第一天,即星期二,因此它在 calDaysOfWeek 中的索引为 2(Sun=0,Mon=1,Tue=2)。您还需要该月的天数,此处为 31。

var s = '';
var numDaysOfWeek = calDaysOfWeek.length;
var firstDay = 2;
var numDaysOfMonth = 31;
var numWeeks = ??? // compute this
for (var i=0; i<numWeeks; i++) {
for (var j=0; j<numDaysOfWeek; j++) {
s = ??? // you need to do this
}
}

一旦结果正确,您可以使用要打印的 html 代码显示它。

编辑:改变循环

Edit2:在 fiddle 上玩过它

calDaysOfWeek = [];
calDaysOfWeek.push("Sun", "Mon", "Tues", "Wed", "Thur", "Fri", "Sat");

var s = "MAY 2012\n";
var numDaysOfWeek = calDaysOfWeek.length;
var firstDay = 2;
var numDaysOfMonth = 31;
var numWeeks = 5; // compute this
for (var i=0; i<numWeeks; i++) {
for (var j=0; j<numDaysOfWeek; j++) {
var n = i * numDaysOfWeek + j + 1 - firstDay ;
if (n < 1 || n > numDaysOfMonth) {
s += ' '; // three spaces
}
else {
if (n < 10)
{
s += ' '; // pad with one space
}
s += n + ' ' ;
}
}
s += "\n";
}


alert(s);

关于javascript - *日历程序* 无法为该日历程序编写循环以正确显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39551873/

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