当前位置: 首页 > news >正文

Android studio:错误: 需要常量表达式

Android studio:错误: 需要常量表达式

将一个项目作为library,通过import Moudle导入一个新项目引用时,爆出这个错误:需要常量表达式,定位到switch。于是百度一下,解决方法为把switch case,改成if else,即:

  switch (v.getId()) {
            // 点击了清除按钮
            case R.id.btn_clear:
                clear();
                break;
            // 点击了取消按钮
            case R.id.btn_cancel:
                break;
            // 点击了加、减、乘、除按钮
            case R.id.btn_plus:
            case R.id.btn_minus:
            case R.id.btn_multiply:
            case R.id.btn_divide:
                operator = inputText; // 运算符
                refreshText(showText + operator);
                break;
            // 点击了等号按钮
            case R.id.btn_equal:
                // 加减乘除四则运算
                double calculate_result = calculateFour();
                refreshOperate(String.valueOf(calculate_result));
                refreshText(showText + "=" + result);
                break;
            // 点击了开根号按钮
            case R.id.ib_sqrt:
                double sqrt_result = Math.sqrt(Double.parseDouble(firstNum));
                refreshOperate(String.valueOf(sqrt_result));
                refreshText(showText + "√=" + result);
                break;
            // 点击了求倒数按钮
            case R.id.btn_reciprocal:
                double reciprocal_result = 1.0 / Double.parseDouble(firstNum);
                refreshOperate(String.valueOf(reciprocal_result));
                refreshText(showText + "/=" + result);
                break;
            // 点击了其他按钮,包括数字和小数点
            default:
                // 上次的运算结果已经出来了
                if (result.length() > 0 && operator.equals("")) {
                    clear();
                }

                // 无运算符,则继续拼接第一个操作数
                if (operator.equals("")) {
                    firstNum = firstNum + inputText;
                } else {
                    // 有运算符,则继续拼接第二个操作数
                    secondNum = secondNum + inputText;
                }
                // 整数不需要前面的0
                if (showText.equals("0") && !inputText.equals(".")) {
                    refreshText(inputText);
                } else {
                    refreshText(showText + inputText);
                }
                break;
        }

改为:

 @Override
    public void onClick(View v) {
        String inputText;
        if(v.getId() == R.id.btn_sqrt){
            inputText = "厂";
        } else {
            inputText = ((TextView) v).getText().toString();
        }

        if (v.getId() == R.id.btn_clear){
            clear();
        } else if (v.getId() == R.id.btn_cancel) {

        } else if (v.getId() == R.id.btn_plus || v.getId() == R.id.btn_minus || v.getId() == R.id.btn_multiply || v.getId() == R.id.btn_divide) {
            operator = inputText;
            refreshText(showText + operator);
        } else if(v.getId() == R.id.btn_equal) {
            double calculate_result = calculateFour();
            refreshOperate(String.valueOf(calculate_result));
            refreshText(showText + "=" + result);
        } else if(v.getId() == R.id.btn_sqrt) {
            double sqrt_result = Math.sqrt(Double.parseDouble(firstNum));
            refreshOperate(String.valueOf(sqrt_result));
            refreshText(showText+"厂="+result);
        } else if(v.getId() == R.id.btn_reciprocal){
            double reciprocal_result = 1.0 / Double.parseDouble(firstNum);
            refreshOperate(String.valueOf(reciprocal_result));
            refreshText(showText+"/="+result);
        } else {
            if(result.length() > 0 && operator.equals("")){
                clear();
            }
            if(operator.equals("")){
                firstNum = firstNum + inputText;
            } else {
                secondNum = secondNum + inputText;
            }
            if(showText.equals("0") && !inputText.equals(".")){
                refreshText(inputText);
            } else {
                refreshText(showText+inputText);
            }
        }
    }

具体原因:http://tools.android.com/tips/non-constant-fields.

相关文章:

  • 算法刷题:长度最小的子数组
  • IOS破解软件安装教程
  • 今天面了一个来字节要求月薪23K,明显感觉他背了很多面试题...
  • Kotlin基本语法3集合
  • HTML-多媒体嵌入-MDN文档学习笔记
  • 订餐|网上订餐系统|基于springboot的网上订餐系统设计与实现(源码+数据库+文档)
  • python-自动化篇-办公-Excel-Openpyxl库
  • docker 2:安装
  • 深度学习基础之《TensorFlow框架(4)—Operation》
  • ZigBee学习——BDB
  • 使用word2vec+tensorflow自然语言处理NLP
  • 如何用 npm 运行本地 js 文件
  • MySQL数据库⑪_C/C++连接MySQL_发送请求
  • WEB APIs(2)
  • 8 scala的伴生对象
  • C#学习(十三)——多线程与异步
  • C# Avalonia 折线图
  • Hexo删除主题
  • 飞机大作战(c语言)
  • 多目标检测与跟踪技术详解
  • 共绘“彩色上海”,IP SH艺术共创沙龙首期圆满举办
  • 民生访谈|支持外贸企业拓内销,上海正抓紧制定便利措施
  • 中央党校(国家行政学院)举行2025年春季学期第一批进修班毕业典礼
  • 辽宁辽阳市白塔区一饭店火灾事故举行新闻发布会,现场为遇难者默哀
  • 中青旅:第一季度营业收入约20.54亿元,乌镇景区接待游客数量同比减少6.7%
  • 国务院安委会对辽宁辽阳一饭店重大火灾事故查处挂牌督办