Javascript的新特性。有人能帮我调试我的程序吗?

Javascript的新特性。有人能帮我调试我的程序吗?,javascript,debugging,Javascript,Debugging,我正在尝试用javascript实现一个二进制搜索,我对JS一无所知。我主要习惯C++语法,所以我有点难以打破我的习惯。 当我在html文档中包含此脚本时,如果数组大小小于1,它将无法退出脚本,并且如果我输入无序数组,它不会触发数组顺序警报。此外,该程序似乎从未完成while循环,因此我不知道是否还有其他问题 任何帮助都将不胜感激 var size = parseInt(prompt("Enter the size of the array:")); if(size < 1) {

我正在尝试用javascript实现一个二进制搜索,我对JS一无所知。我主要习惯C++语法,所以我有点难以打破我的习惯。 当我在html文档中包含此脚本时,如果数组大小小于1,它将无法退出脚本,并且如果我输入无序数组,它不会触发数组顺序警报。此外,该程序似乎从未完成while循环,因此我不知道是否还有其他问题

任何帮助都将不胜感激

var size = parseInt(prompt("Enter the size of the array:"));

if(size < 1) {
    alert("ERROR: you entered an incorrect value for the array size!");
    return;
}

var arr = [size];
var input = parseInt(prompt("Enter the numbers in the array in increasing order,"
        + " separated by a space, and press enter:"));

arr = input.split(" ");

var checkOrder = function(array) {
    for(var i = 0; i < size-1; i++) {
        if(array[i] > array[i+1]) {
            return false;
        }
    }
    return true;
}

if(!checkOrder(arr)) {
    alert("The values entered for the array are not in increasing order!");
}

var search = parseInt(prompt("Enter a number to search for in the array: "));

var lp = 0; //left endpoint
var rp = size; //right endpoint
var mid = 0;
var counter = 0;
var found = false;

while(lp <= rp) {
    mid = Math.floor((lp + rp)/2);
    if(arr[mid] == search) {
        alert("Found value " + search + " at index " + mid);
        counter++;
        found = true;
        break;
    } else if(arr[mid] > search) {
        rp = mid + 1;
        counter++;
    } else {
        lp = mid;
        counter++;
    }
}

if(!found) {
    alert("The value " + search + "was not found in the array");
    alert("I wasted " + counter + " checks looking for a value that's not in the array!");
    return;
}  
var size=parseInt(提示(“输入数组的大小:”);
如果(尺寸<1){
警报(“错误:您输入的数组大小值不正确!”);
返回;
}
var-arr=[size];
var input=parseInt(提示(“按递增顺序输入数组中的数字,”
+用空格分隔,然后按enter键:);
arr=输入。拆分(“”);
var checkOrder=函数(数组){
对于(变量i=0;i数组[i+1]){
返回false;
}
}
返回true;
}
如果(!检查订单(arr)){
警报(“为数组输入的值不是按升序排列的!”);
}
var search=parseInt(提示(“在数组中输入要搜索的数字:”);
var-lp=0//左端
var rp=尺寸//右端点
var-mid=0;
var计数器=0;
var=false;
while(lp搜索){
rp=mid+1;
计数器++;
}否则{
lp=中等;
计数器++;
}
}
如果(!找到){
警报(“在数组中找不到值“+search+”);
警报(“我浪费了“+计数器+”检查以查找不在数组中的值!”);
返回;
}  
上面的代码可能不是您想要的。这将创建一个包含一个元素的数组,该元素的值为
size
。通过执行以下操作,可以创建具有特定初始大小的阵列:

var arr = new Array(size);

您的输入法不正确。
撇开阵列初始化问题不谈,行

var input = parseInt(prompt(".."))
我只给你一个号码

实际上,您可以跳过对数组大小的提示

var input = prompt('Space separated numbers:')
var array = input.split(' ')
if (array.length == 0) {
    alert('._.'); return
}
for (var i = 0; i < array.length; i++)
    array[i] = parseInt(array[i])
var input=prompt('空格分隔的数字:')
变量数组=输入。拆分(“”)
如果(array.length==0){
警报('.'.');返回
}
对于(var i=0;i
一种简单的调试方法是使用chrome调试器。在chrome中打开html文件,然后按“Ctrl”+“Shitf”+“J”。然后,您可以在脚本中设置断点,并查看可能出现的问题
var input = prompt('Space separated numbers:')
var array = input.split(' ')
if (array.length == 0) {
    alert('._.'); return
}
for (var i = 0; i < array.length; i++)
    array[i] = parseInt(array[i])