Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/439.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将此Pascal代码转换为JavaScript?_Javascript_Pascal - Fatal编程技术网

如何将此Pascal代码转换为JavaScript?

如何将此Pascal代码转换为JavaScript?,javascript,pascal,Javascript,Pascal,我试图编写简单的JS代码,以找出给定字符串中1到9之间的数字的数量。我有一个Pascal代码: Var n,i:longint; A:array[0..9] of byte; Begin write('Введите число: ');readln(n); While n>0 do Begin A[n mod 10]:=A[n mod 10]+1; n:=n div 10; End; For i:=0 to 9 do writeln('The numbe

我试图编写简单的JS代码,以找出给定字符串中1到9之间的数字的数量。我有一个Pascal代码:

Var n,i:longint;
A:array[0..9] of byte;
Begin
 write('Введите число: ');readln(n);
 While n>0 do
  Begin
   A[n mod 10]:=A[n mod 10]+1;
   n:=n div 10;
  End;
  For i:=0 to 9 do
   writeln('The number ',i,' occurs ',A[i],' amount of times');
  readln;
 End.
在JS中,我以这个结尾,但这似乎有一个永无止境的循环:

函数plosh(表单){
变量列表=新数组(9);
var n=形式a.值;
而(n>0){
a=n%10;
列表[a]=列表[a]+1;
n=n%10;
}
对于(var i=0;i
翻译为:

n = n % 10;
但应该是:

n = Math.floor(n / 10);

编辑:同样,你用帕斯卡定义了一个数组[0..9],这意味着10个元素。当你调用
array(9)
时,你只创建了9个元素。

n=n%10
一低于
10
就保持
n
不变,所以它通常永远不会达到
0
,因此循环是无限的

这个函数进行整数除法

改变

n = n % 10

您还存在另一个问题:您没有正确初始化数组,因此正在将
1
添加到
undefined
。请按如下方式修复此问题:

函数plosh(表单){
var a,
列表=[],
n=形式a.值;
而(n>0){
a=n%10;
列表[a]=(列表[a]| 0)+1;
n=数学楼层(n/10);
}

对于(var i=0;i更正将是
n=Math.floor(n/10)
。在
a=n%10;
之前,请小心添加
var
,否则
a
将是一个全局变量。这可能会在将来导致一些问题。别忘了用值初始化数组(可能是0)!明白了,我现在知道哪里出错了!非常感谢。
n = n % 10
n = Math.floor( n / 10 );