问题描述
我在 javascript 中解决了一个问题,但是当我执行代码时,我得到的结果是:'A',但我想知道我编码的内容是否好,因为我有疑问。 问题来了:
printChar
允许在多行中显示一个且仅一个 ASCII 字符,从 A 到 Z(含)
列(称为“ASCII 艺术”的图形表示)。
我们想在另一个方向执行操作:从它的表示中获取一个字符
图形。
实现 scanChar (str)
方法,使其返回与其表示相关联的字符 c
图(即str = printChar (c))。
如果 str 不匹配 A 和 Z(含)之间的字符,则 scanChar 应返回字符 '?'
这是我的代码:
function scanChar(str) {
// Iterate over each character from A to Z.
for (var c = 'A'; c <= 'Z'; c++) {
// Check to see if the character corresponds with the ASCII art.
if (printChar(c) === str) {
// Return the character if it does.
return c;
}
}
// Optionally use a '?' character to indicate that the string passed
// doesn't correspond to any valid ASCII art.
return '?';
}
function printChar( s) {
return "S";
}
var art=printChar('A');
console.log(scanChar(art));
解决方法
您的代码很优雅,但存在许多可以轻松修复的逻辑问题。
- 您的 prinbtChar 函数总是返回字符串“S”
- 您从 A - Z 开始的 for 循环不太正确。我已经用一种方法替换了它。
function scanChar(str) {
console.log(str)
// Iterate over each character from A to Z.
var first = "A",last = "Z";
for(var i = first.charCodeAt(0); i <= last.charCodeAt(0); i++) {
var c = String.fromCharCode(i);
if (printChar(c) === str) {
// Return the character if it does.
return c;
}
}
// Optionally a '?' character to indicate that the string passed
// doesn't correspond to any valid ASCII art.
return '?';
}
function printChar( s) {
return s;
}
var art=printChar('J');
console.log(scanChar(art));