javascript - 用数字和星号在javascript中构建正方形
问题描述
伙计们,我需要你的帮助,我应该完成在 javascript 中使用 for 循环制作正方形的任务。但我无法得到确切的一个。请帮帮我!下面是最终输出的图示:
* 2 3 4 5<br>
* * 3 4 5<br>
* * * 4 5<br>
* * * * 5<br>
* * * * *<br>
var n = 5;
var star = "";
var str = '';
var triangle = "";
for(i = 1; i <= n; i++ ){
star += "* ";
for (j = 4; j >= 1; j--){
str += j + " ";
triangle = star + str;
}console.log(triangle);
}
解决方案
您的代码中的当前逻辑存在一些问题。第一个也是最值得注意的问题是您在循环外部初始化变量 str,并且您在内部循环内部将字符附加到它。这会给您带来不希望的效果,因为当您遍历循环时,字符串的值不会被重置,它只是附加更多“自身相乘”的字符。因此,要解决第一个问题,您只需将 str 变量的声明移到外循环中即可。
var n = 5;
var star = "";
var triangle = "";
for(i = 1; i <= n; i++ ){
var str = "";
star += "* ";
for (j = 4; j >= 1; j--){
str += j + " ";
triangle = star + str;
}console.log(triangle);
}
现在代码的输出如下所示:
* 4 3 2 1
* * 4 3 2 1
* * * 4 3 2 1
* * * * 4 3 2 1
* * * * * 4 3 2 1
这仍然是不受欢迎的。现在还有两个问题。数字是倒数而不是倒数。其中四个始终显示。这两个问题都可以通过固定内循环来用一块石头解决,如下所示:
var n = 5;
var star = "";
var triangle = "";
for(i = 1; i <= n; i++ ){
str = "";
star += "* ";
for (j = i + 1; j <= n; j++){
str += j + " ";
triangle = star + str;
}
console.log(triangle);
}
这给我们留下了最终错误,即最后一行的打印结果与第四个 '* * * * 5' 相同,因为设置三角形的行在循环内部,并且在循环的最后一次迭代中没有到达。最终解决方案在这里:
var n = 5;
var star = "";
var triangle = "";
for(i = 1; i <= n; i++ ){
str = "";
star += "* ";
for (j = i + 1; j <= n; j++){
str += j + " ";
}
triangle = star + str;
console.log(triangle);
}
推荐阅读
- r - 过滤数据框以仅获取在列中具有值且在第一个值 R 之后的任何列中具有另一个值的行
- c - 带有 MPU9250 的 ESP32 不会将传感器读数发布到 MQTT(mosquitto) 代理和节点红色
- go - Go AWS S3 SDK:获取具有特定键/值标签的存储桶的最佳方法
- flutter - 在小部件树中向上移动逻辑
- gitlab - 如何排除 Runners 处理 .gitlab-ci.yml 文件中的作业
- php - Elementor:在 iframe / 扩展部分中查找工具以获取结果
- python - Dask 分布式文件上传抛出 FileNotFound
- javascript - 使用自定义挂钩重新渲染应用程序不起作用
- c# - C# Newtonsoft JSON - 使用嵌套对象反序列化 DataTable
- expo - 有没有办法在不使用任何 Expo.io 基础设施或外部 HTTP 服务器的情况下构建 Expo 应用程序?