Javascript 在JS中构建计算器的问题

Javascript 在JS中构建计算器的问题,javascript,Javascript,我是一个完全的初学者,并且已经开始通过免费代码营学习javascript。我正在尝试编写一个程序,使用基本javascript制作计算器。我的计算器似乎工作正常,只是有几个问题需要解决。编辑以澄清我在这里寻求的帮助。请用下面的操作运行下面代码段中的代码,您将理解我的要求。键入9-2,然后点击“=”计算器应显示“7”。如果在显示“7”后立即键入“2”,屏幕上将显示“72”,这是我不希望它执行的操作。我希望它重置为一个空白屏幕。我遇到的另一个问题是操作符的重复显示。我使用过其他评论者提供的代码,但它

我是一个完全的初学者,并且已经开始通过免费代码营学习javascript。我正在尝试编写一个程序,使用基本javascript制作计算器。我的计算器似乎工作正常,只是有几个问题需要解决。编辑以澄清我在这里寻求的帮助。请用下面的操作运行下面代码段中的代码,您将理解我的要求。键入9-2,然后点击“=”计算器应显示“7”。如果在显示“7”后立即键入“2”,屏幕上将显示“72”,这是我不希望它执行的操作。我希望它重置为一个空白屏幕。我遇到的另一个问题是操作符的重复显示。我使用过其他评论者提供的代码,但它们似乎不起作用。我会继续寻找解决办法。谢谢大家

  • 操作员:
    +
    -
    *
    /
    此时处于活动状态,可在反复按下按钮时重复操作。如何创建只允许显示一次的函数
  • 点击“相等”按钮后,结果显示在屏幕上。如果我按下另一个数字,它将添加到结果中,而不是在新屏幕上开始。我需要它重置并使用我当前的代码启动一个新的。 欢迎提供任何指导和指导。我已经在谷歌上搜索了好几天了,但还是被卡住了。我在逻辑方面也很糟糕,我正在尽我最大的努力来解决这个问题。谢谢
    var show=document.getElementById('display');
    var重置=错误;
    函数clear(){
    如果(重置){
    show.value='';
    重置=错误;
    }
    }
    功能至屏幕(x){
    清除();
    show.value+=x;
    如果(x=='c'){
    show.value='';
    }
    }
    函数答案(){
    x=显示值;
    x=评估值(x);
    show.value=x;
    重置=错误;
    }
    函数幂(){
    x=显示值;
    x=评估值(x*x);
    show.value=x;
    }
    函数退格(){
    var num=show.value;
    var len=num.length-1;
    var newNum=num.substring(0,len);
    show.value=newNum;
    }
    函数百分比(){
    x=显示值;
    x=评估值(x/100);
    show.value=x;
    }
    函数对立面(){
    var n=显示值;
    n=n*-1;
    show.value=n;
    }
    函数sqrt(){
    变量编号=show.value;
    var ans=数学sqrt(数字);
    如果(数字<0)
    ans=“试试正数!”;
    show.value=ans;
    }
    函数派(){
    var pi=show.value;
    var结果=Math.PI;
    show.value=结果;
    }
    
    






    将重置更改为true,以便将show.value清除为空字符串,从而为您解决nr.2问题参见代码

    这是完美的工作代码。您可以在某些地方用i替换x,如:

    function power() {
      x = eval(i * i);
      show.value = x;
      reset = true;
    }
    
    问题已修复:

  • 你的第一个和第二个问题

  • 您的代码未检查是否从num.或运算符(/1,*1)开始输入

  • 您的代码未检查无效输入(1+、1+1+等)

  • 在power Pi等之后,您的代码也不清楚屏幕(如在anser的情况下)

  • 您的函数(如PI Power)不检查输入是否为数字(8*的幂)参见幂函数:

  • var show=document.getElementById('display');
    var重置=错误;
    var i=“”//存储键入的内容
    函数clear(){
    如果(重置){
    i='';
    show.value=i;
    重置=错误;
    }
    }
    功能至屏幕(x){
    清除();
    如果(x==“+”| | x==”-“| | x==”*“| | x==”/“| | x==”){
    如果(i.charAt(i.length-1)==x){
    返回false;
    }
    如果(i.length==0){
    返回false;
    }
    }
    i+=x;
    如果(x=='c'){
    i='';
    }
    show.value=i;
    }
    函数答案(){
    var op=[“+”、“-”、“*”、“/”];
    对于(a=0;a
    
  • 编辑
    toScreen()
    函数,仅添加
    操作符(如果是)
    以前未键入的:

  • 只需在
    answer()
    函数中将
    reset
    设置为
    false
  • 以下是为您准备的工作片段:

    var show=document.getElementById('display');
    var重置=错误;
    var i=“”;//存储键入的内容
    函数clear(){
    如果(重置){
    i='';
    show.value=i;
    重置=错误;
    }
    }
    功能至屏幕(x){
    清除();
    var nottweeds=['+'、'-'、'*'、'/'、'.];//不应重复的字符列表
    如果(不是两次,索引(x)>-1){
    if(show.value.slice(-1)!=x){//只有在之前没有键入时才键入它
    show.value+=x;
    }
    }
    否则{
    show.value+=x;
    }
    如果(x=='c'){
    show.value='';
    }
    }
    函数答案(){
    var op=[“+”、“-”、“*”、“/”];
    
    对于(a=0;我在上面的“代码片段”上运行了你的代码,但这不起作用。我输入了7-4,然后点击“=”它给了我一个答案,但如果我点击另一个数字,如“4”按钮,它会将该数字添加到“7-4”,并显示“7-44”,而不是清除显示,只显示“4”。@silkshocker查看编辑后的答案。希望现在一切都正常。如果您喜欢,请接受并向上投票。感谢更新。现在我遇到了一个问题,无法在显示的结果上执行操作。例如,在点击“=”按钮获得一个值后,如果我想在不清除屏幕的情况下按“+”向其添加另一个数字,则“+”符号不会出现,并且我无法执行操作算术。这很奇怪,因为我在版本之前的代码允许我这么做。@silkshocker你的问题2避免这个。如果你想只清除数字的屏幕,试试你自己。这不是一个免费的编码网站。是的,它解决了我对#2的问题,但产生了另一个问题,如果我按下像“/”这样的运算符,它只会显示ay运算符前面没有数字。例如,当我按“9-2”时,然后“=”此时屏幕显示“7”,如果我按“/”,它将显示“/”,前面没有“7”,这是我不想要的。比
    function power() {
      x = eval(i * i);
      show.value = x;
      reset = true;
    }
    
    function toScreen(x) {
      clear();
      var notTwice = ['+', '-', '*', '/', '.']; //List of chars that should not be repeated
      if(notTwice.indexOf(x) > -1){
        if(show.value.slice(-1) != x){ //Only type it if it wasn't typed right before
          show.value += x;
        }
      }
      else{
        show.value += x;
      }
      if (x === 'c') {
        show.value = '';
      }
    }