function rot13(str) { // LBH QVQ VG!
var array=str.split(" ");
for(var i=0;i<array.length;i++){
array[i]=array[i].split('');
}
for(var j=0;j<array.length;j++){
for(var k=0;k<array[j].length;k++){
var s=array[k];
if(s=="!"||s=="?"||s=="."){
s=s;
}
else if(s.charCodeAt(0)==77||s.charCodeAt(0)<77){
s=String.fromCharCode(s.charCodeAt(0)+13);
}
else if(s.charCodeAt(0)>77){
s=String.fromCharCode(s.charCodeAt(0)-13);
}
}
for(i=0;i<array.length;i++){
array[i]=array[i].join("");
}
array=array.join(" ");
return array;
}
}
// Change the inputs below to test
rot13("IM JOE!");
所以例如,rot13(“SERR YBIR!”)应该给你“自由的爱!”。 错误消息显示“TypeError:s.charCodeAt不是函数”。
什么意思?我该如何解决?
答案 0 :(得分:1)
将var s=arr[k];
更改为var s=arr[j][k];
此外,您必须在加入数组之前将结果放入数组中。
function rot13(str) { // LBH QVQ VG!
var arr=str.split(" ");
for(var i=0;i<arr.length;i++){
arr[i]=arr[i].split('');
}
for(var j=0;j<arr.length;j++){
for(var k=0;k<arr[j].length;k++){
var s=arr[j][k];
if(s=="!"||s=="?"||s=="."){
s=s;
}
else if(s.charCodeAt(0)<=77){
s=String.fromCharCode(s.charCodeAt(0)+13);
}
else if(s.charCodeAt(0)>77){
s=String.fromCharCode(s.charCodeAt(0)-13);
}
arr[j][k] = s;
}
}
for(i=0;i<arr.length;i++){
arr[i]=arr[i].join("");
}
arr=arr.join(" ");
return arr;
}
// Change the inputs below to test
alert(rot13("IM JOE!"));
&#13;
答案 1 :(得分:1)
您需要使用array[j][k]
您还需要更改数组,更改s
不执行任何操作
你错放了}
您应该查看<=
function rot13(str) { // LBH QVQ VG!
var array = str.split(" ");
for (var i = 0; i < array.length; i++) {
array[i] = array[i].split('');
}
for (var j = 0; j < array.length; j++) {
for (var k = 0; k < array[j].length; k++) {
var s = array[j][k].charCodeAt(0);
if (s >= 65 && s <= 77) {
array[j][k] = String.fromCharCode(s.charCodeAt(0) + 13);
} else if (s >= 78 && s <= 90) {
array[j][k] = String.fromCharCode(s.charCodeAt(0) - 13);
}
}
// this } was below the return statement, so only the first word would've been transformed
}
for (i = 0; i < array.length; i++) {
array[i] = array[i].join("");
}
array = array.join(" ");
return array;
}
// Change the inputs below to test
console.log(rot13("IM JOE!"));
console.log(rot13("LBH QVQ VG!"));
答案 2 :(得分:1)
检查你的逻辑 return语句和数组访问的位置是错误的。
function rot13(str) {
var array=str.split(" ");
for(var j=0;j<array.length;j++){
array[j]=array[j].split('');
for(var k=0;k<array[j].length;k++){
var s=array[j][k];
if(s=="!"||s=="?"||s=="."){
s=s;
}
else if(s.charCodeAt(0)==77||s.charCodeAt(0)<77){
s=String.fromCharCode(s.charCodeAt(0)+13);
}
else if(s.charCodeAt(0)>77){
s=String.fromCharCode(s.charCodeAt(0)-13);
}
array[j][k]=s;
}
array[j]=array[j].join("");
}
array=array.join(" ");
return array;
}
// Change the inputs below to test
alert(rot13("SERR YBIR!"));