江湛瞳 2016-08-09 09:03 采纳率: 0%
浏览 1768

关于在js中prompt输入值为0的问题

写了一个在同一个prompt输入框内输入两个数字比较大小的函数,用substring判断字符是否为数字来区分两个数字,代码如下:

function bijiao(){
var x = prompt("输入两个数字(请用标点符号间隔)");//x为所有输入的长度
var len = x.length;//输入字符的长度
var str = '';//用来获取输入的数字
var x1 = 0;//每个数字起始下标
var i = 0;//字符下标
var z = 0;//用来判断数字个数
var arr = new Array();//用来承装比较的数字

for (x1; x1 < len;) {
i = x1;//从数字的起始位置开始
for (;x.substring(i, i+1)>0 && x.substring(i, i+1)<=9;i++) {//判断每个字符是否为0-9之间的数字
str = str + x.substring(i, i+1);
}
x1 = i + 1;//重置数字起始下标
if (str != '') {//读数字
document.write('输入的第' + 'z' + '个数字为:' + str + '。
');
arr[z] = Number(str);
str = '';
++z;
}
if (z == 2) {//当两个数字读取完毕之后跳出循环
break;
}
}
if (arr[0] > arr[1]) {
alert("最大值为" + arr[0]);
}else if (arr[0] < arr[1]){
alert("最大值为" + arr[1]);
}else{
alert(arr[0] + "和" + arr[1] + "相等");
}
}
bijiao();

其中有一个有意思的部分,当判断条件为“for (;x.substring(i, i+1)>0 && x.substring(i, i+1)<=9;i++)”时可以正常比较,只是识别不到用户输入的“0”;可是当改成“for (;x.substring(i, i+1)>=0 && x.substring(i, i+1)<=9;i++)”时,所有的浏览器都会刷新很久但出不来结果,怀疑是将“0”识别为“null”,因而导致崩溃,不知是否有大神知道原因

  • 写回答

1条回答 默认 最新

  • Go 旅城通票 2016-08-09 13:00
    关注

    ....一个对比能写出这么多行代码。。。split,再parseInt对比就行来了。。

     function bijiao(){
    var x = prompt("输入两个数字(请用英文状态下逗号间隔)");//x为所有输入的长度
    var arr=x.split(',');
    arr[0]=parseInt(arr[0])||0;
    arr[1]=parseInt(arr[1])||0
    if (arr[0] > arr[1]) {
    alert("最大值为" + arr[0]);
    }else if (arr[0] < arr[1]){
    alert("最大值为" + arr[1]);
    }else{
    alert(arr[0] + "和" + arr[1] + "相等");
    }
    }
    bijiao();
    
    评论

报告相同问题?

悬赏问题

  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!