亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

制作計算器時值未更新

制作計算器時值未更新

繁星coding 2021-11-03 10:51:08
我在 android studio 中制作了一個簡單的應用程序。我使用了一個單一的文本視圖來接收這兩個數字。我還制作了按鈕,用于 10 位數字、4 位運算和小數點以及等號。我的應用程序沒有讀取第二個數字。當我按下“=”按鈕時,它只顯示第一個數字。例如,當我輸入一個數字 25 并按下“+”按鈕時,該數字將存儲在浮點變量 res 中,并且文本視圖被清除?,F在,如果我輸入第二個數字 11 并按“=”,則輸出為 25.0下面是我按下 + 按鈕時的代碼。    sum.setOnClickListener(new View.OnClickListener() {        @Override        public void onClick(View v) {            if(result.getText()==null)            {                result.setText("");            }            else            {                num1 = Float.parseFloat(result.getText().toString());                res=res+num1;                result.setText(null);                num1=0;            }        }    });下面是我按下 = 時的代碼    equal.setOnClickListener(new View.OnClickListener() {        @Override        public void onClick(View v) {                result.setText(Float.toString(res));                res=0;        }    });num1和res,都是浮點數,都初始化為 0。
查看完整描述

3 回答

?
慕運維8079593

TA貢獻1876條經驗 獲得超5個贊

對運算符使用 switch case,假設以下是字段;


public static final int plus = 1

 public static final int minus= 2

 public static final int divide= 3

 public static final int multiply= 4


和一個保存當前操作的變量,


int currentOperation;

當單擊某個操作員按鈕時,將“currentOperation”分配給偵聽器中的該操作


sum.setOnClickListener(new View.OnClickListener() {

    @Override

    public void onClick(View v) {

        if(result.getText()==null)

        {

            result.setText("");

        }

        else

        {

            num1 = Float.parseFloat(result.getText().toString());

            res=res+num1;

            result.setText(null);

            num1=0;

            currentOperation = plus //plus is public static final int plus = 1


        }

    }

});

并使用 switch 語句更新 '='listener,


equal.setOnClickListener(new View.OnClickListener() {

    @Override

    public void onClick(View v) {

            num1 = Float.parseFloat(result.getText().toString());

            switch(currentOperation){

                  case plus:

                       res=res+num1;

                       break;

                  case minus:

                       res=res-num1;

                       break;

                  case divide:

                       res=res/num1;

                       break;

                  case multiply:

                       res=res*num1;

                       break;

            }



            result.setText(""+ res);

            num1=0;

    }

});


查看完整回答
反對 回復 2021-11-03
?
叮當貓咪

TA貢獻1776條經驗 獲得超12個贊

您沒有讀取第二個數字(運算符右側)的值。= 按鈕的 OnClickListener 除了顯示 res 之外什么都不做。它不適用于運算符的右手,即第二個數字

例如 1 + 2 = 3

Step 1 按1 Step 2 按+,程序會得到算符的左邊,加載到num1,加到res。Step 3 按2 Step 4 按=,程序會顯示res

如果您想實時查看程序正在執行的操作,請嘗試使用“調試”工具,您可以在其中逐行逐步執行程序并查看哪些變量被設置為額外的變量。


查看完整回答
反對 回復 2021-11-03
?
慕田峪9158850

TA貢獻1794條經驗 獲得超8個贊

您還應該從用戶那里獲取第二個值,并分別在每個運算符函數中進行計算。

您的所有運算符功能都存在邏輯錯誤。每當調用特定函數時,您都應該在所有運算符中添加此行。


result.setText(num1 - num2 + "");


result.setText(num1 + num2 + "");

等等?。?!


您通過為操作創建匿名函數而使用了錯誤的技術。請您切換嵌套的 if-else 語句。


查看完整回答
反對 回復 2021-11-03
  • 3 回答
  • 0 關注
  • 171 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號