计算器

2024-12-01 22:32:02
11次阅读
0个评论

`@Entry @Component struct CalcPage { @State x: number = 0; @State y: number = 0; @State operator: string = ""; @State result: string = "";

build() { GridRow({ gutter: { y: 10 } }) { GridCol({ span: 12 }) { TextInput({ placeholder: '0', text: this.result }) .type(InputType.Normal) .width('100%') .height('10%') .backgroundColor(Color.White) .textAlign(TextAlign.End) .fontSize(36) .margin({ top: '15%' }) .placeholderFont({ size: 36 }) }.width('100%')

  GridCol({ span: 3 }) {
    Button('7')
      .type(ButtonType.Normal)
      .fontSize(36)
      .width('100%')
      .height('100%')
      .onClick(() => {
        this.result += "7";
      })
  }.height('15%').margin({ right: 5 })

  GridCol({ span: 3 }) {
    Button('8')
      .type(ButtonType.Normal)
      .fontSize(36)
      .width('100%')
      .height('100%')
      .onClick(() => {
        this.result += "8";
      })
  }.height('15%').margin({ right: 5 })

  GridCol({ span: 3 }) {
    Button('9')
      .type(ButtonType.Normal)
      .fontSize(36)
      .width('100%')
      .height('100%')
      .onClick(() => {
        this.result += "9";
      })
  }.height('15%').margin({ right: 5 })

  GridCol({ span: 3 }) {
    Button('÷')
      .type(ButtonType.Normal)
      .fontSize(36)
      .width('100%')
      .height('100%')
      .onClick(() => {
        this.x = parseFloat(this.result);
        this.operator = "÷";
        this.result = ""
      })
  }.height('15%').margin({ right: 5 })

  GridCol({ span: 3 }) {
    Button('4')
      .type(ButtonType.Normal)
      .fontSize(36)
      .width('100%')
      .height('100%')
      .onClick(() => {
        this.result += "4";
      })
  }.height('15%').margin({ right: 5 })

  GridCol({ span: 3 }) {
    Button('5')
      .type(ButtonType.Normal)
      .fontSize(36)
      .width('100%')
      .height('100%')
      .onClick(() => {
        this.result += "5";
      })
  }.height('15%').margin({ right: 5 })

  GridCol({ span: 3 }) {
    Button('6')
      .type(ButtonType.Normal)
      .fontSize(36)
      .width('100%')
      .height('100%')
      .onClick(() => {
        this.result += "6";
      })
  }.height('15%').margin({ right: 5 })

  GridCol({ span: 3 }) {
    Button('×')
      .type(ButtonType.Normal)
      .fontSize(36)
      .width('100%')
      .height('100%')
      .onClick(() => {
        this.x = parseFloat(this.result);
        this.operator = "×";
        this.result = ""
      })
  }.height('15%').margin({ right: 5 })

  GridCol({ span: 3 }) {
    Button('1')
      .type(ButtonType.Normal)
      .fontSize(36)
      .width('100%')
      .height('100%')
      .onClick(() => {
        this.result += "1";
      })
  }.height('15%').margin({ right: 5 })

  GridCol({ span: 3 }) {
    Button('2')
      .type(ButtonType.Normal)
      .fontSize(36)
      .width('100%')
      .height('100%')
      .onClick(() => {
        this.result += "2";
      })
  }.height('15%').margin({ right: 5 })

  GridCol({ span: 3 }) {
    Button('3')
      .type(ButtonType.Normal)
      .fontSize(36)
      .width('100%')
      .height('100%')
      .onClick(() => {
        this.result += "3";
      })
  }.height('15%').margin({ right: 5 })

  GridCol({ span: 3 }) {
    Button('-')
      .type(ButtonType.Normal)
      .fontSize(36)
      .width('100%')
      .height('100%')
      .onClick(() => {
        this.x = parseFloat(this.result);
        this.operator = "-";
        this.result = ""
      })
  }.height('15%').margin({ right: 5 })

  GridCol({ span: 3 }) {
    Button('CE')
      .type(ButtonType.Normal)
      .fontSize(36)
      .width('100%')
      .height('100%')
      .onClick(() => {
        this.x = 0;
        this.operator ='';
        this.y = 0;
        this.result = "";
      })
  }.height('15%').margin({ right: 5 })

  GridCol({ span: 3 }) {
    Button('0')
      .type(ButtonType.Normal)
      .fontSize(36)
      .width('100%')
      .height('100%')
      .onClick(() => {
        this.result += "0";
      })
  }.height('15%').margin({ right: 5 })

  GridCol({ span: 3 }) {
    Button('.')
      .type(ButtonType.Normal)
      .fontSize(36)
      .width('100%')
      .height('100%')
      .onClick(() => {
        this.result += ".";
      })
  }.height('15%').margin({ right: 5 })

  GridCol({ span: 3 }) {
    Button('+')
      .type(ButtonType.Normal)
      .fontSize(36)
      .width('100%')
      .height('100%')
      .onClick(() => {
        this.x = parseFloat(this.result);
        this.operator = "+";
        this.result = ""
      })
  }.height('15%').margin({ right: 5 })
  GridCol({ span: 3 }) {
    Button('%')
      .type(ButtonType.Normal)
      .fontSize(36)
      .width('100%')
      .height('100%')
      .onClick(() => {
        this.x = parseFloat(this.result);
        this.operator = "%";
        this.result = ""
      })
  }.height('15%').margin({ right: 5 })
  GridCol({ span: 3 }) {
    Button('00')
      .type(ButtonType.Normal)
      .fontSize(36)
      .width('100%')
      .height('100%')
      .onClick(() => {
        this.result += "00";
      })
  }.height('15%').margin({ right: 5 })

  GridCol({ span: 6 }) {
    Button('=')
      .type(ButtonType.Normal)
      .fontSize(36)
      .width('100%')
      .height('100%')
      .onClick(() => {
        this.y = parseFloat(this.result);
        switch (this.operator) {
          case '+':
            this.result = (this.x + this.y).toString();
            break;
          case '-':
            this.result = (this.x - this.y).toString();
            break;
          case '×':
            this.result = (this.x * this.y).toString();
            break;
          case '÷':
            this.result = (this.x / this.y).toString();
            break;
        }
      })
  }.height('15%').margin({ right: 5 })
}.width('100%').height('100%').backgroundColor("#F2F2F2")

} }`

image.png

收藏00

登录 后评论。没有帐号? 注册 一个。