为了账号安全,请及时绑定邮箱和手机立即绑定

当我点击数字时出现了这个错误,请问是哪里出错?

当我点击数字时出现了这个错误,请问是哪里出错?5464253900018de005000189.jpg

正在回答

11 回答

各种错误啊,不过在排出bug中也算提高了自己,后来的错误,是由于把indexof(' ')+2,这个代码写成indexof(''+2)导致字符串截取抛出异常,还有indexof(‘’)和indexof(“”)一样吗?我看到老师的是(‘’),但是Eclipse中使用(“”)并不提示错误,这俩意思一样吗?

0 回复 有任何疑惑可以回复我~

点击数字,小数点已经没问题了,现在又跑到getResult这个方法里的错误,我继续排查下,谢谢老师指点

0 回复 有任何疑惑可以回复我~

你这段代码的业务逻辑是不是存在问题?没全部看完,但是看到这感觉有点别扭,你检查看看

if (clear_flag) {
    clear_flag = false;
    return;
}
clear_flag = true;


0 回复 有任何疑惑可以回复我~

果然没有错误,难道就是没有初始化造成的?

0 回复 有任何疑惑可以回复我~

但是老师的代码里也没有初始化,就直接判断,看来布尔类型是默认为false吧?

0 回复 有任何疑惑可以回复我~

是不是因为clear_flag没有初始化?

0 回复 有任何疑惑可以回复我~

恩,我debug模式下分步运行时出现的错误提示,那我的这个flag出问题了?运行后,点击按钮即出现unf什么就是很抱歉的意思,程序stoped。不知道问题出在哪里了,编译器没有提示错误,看来是逻辑错误了。我把代码提出,

好像是问题处在这个clear_flag上的。

package com.example.calcdemo;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;

public class MainActivity extends Activity implements OnClickListener {
	EditText et_input;
	Button btn_0;
	Button btn_1;
	Button btn_2;
	Button btn_3;
	Button btn_4;
	Button btn_5;
	Button btn_6;
	Button btn_7;
	Button btn_8;
	Button btn_9;
	Button btn_point;
	Button btn_clear;
	Button btn_del;
	Button btn_plus;
	Button btn_minus;
	Button btn_multiply;
	Button btn_divide;
	Button btn_equle;
	Boolean clear_flag;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		et_input = (EditText) findViewById(R.id.et_input);
		et_input.setKeyListener(null);
		btn_0 = (Button) findViewById(R.id.but_0);
		btn_1 = (Button) findViewById(R.id.but_1);
		btn_2 = (Button) findViewById(R.id.but_2);
		btn_3 = (Button) findViewById(R.id.but_3);
		btn_4 = (Button) findViewById(R.id.but_4);
		btn_5 = (Button) findViewById(R.id.but_5);
		btn_6 = (Button) findViewById(R.id.but_6);
		btn_7 = (Button) findViewById(R.id.but_7);
		btn_8 = (Button) findViewById(R.id.but_8);
		btn_9 = (Button) findViewById(R.id.but_9);
		btn_point = (Button) findViewById(R.id.but_point);
		btn_clear = (Button) findViewById(R.id.but_clear);
		btn_del = (Button) findViewById(R.id.but_del);
		btn_plus = (Button) findViewById(R.id.but_plus);
		btn_minus = (Button) findViewById(R.id.but_minus);
		btn_multiply = (Button) findViewById(R.id.but_multply);
		btn_divide = (Button) findViewById(R.id.but_divide);
		btn_equle = (Button) findViewById(R.id.but_equal);

		btn_0.setOnClickListener(this);
		btn_1.setOnClickListener(this);
		btn_2.setOnClickListener(this);
		btn_3.setOnClickListener(this);
		btn_4.setOnClickListener(this);
		btn_5.setOnClickListener(this);
		btn_6.setOnClickListener(this);
		btn_7.setOnClickListener(this);
		btn_8.setOnClickListener(this);
		btn_9.setOnClickListener(this);
		btn_point.setOnClickListener(this);
		btn_clear.setOnClickListener(this);
		btn_del.setOnClickListener(this);
		btn_plus.setOnClickListener(this);
		btn_minus.setOnClickListener(this);
		btn_multiply.setOnClickListener(this);
		btn_divide.setOnClickListener(this);
		btn_equle.setOnClickListener(this);
	}

	@Override
	public void onClick(View arg0) {
		String str = et_input.getText().toString();
		switch (arg0.getId()) {
		case R.id.but_0:
		case R.id.but_1:
		case R.id.but_2:
		case R.id.but_3:
		case R.id.but_4:
		case R.id.but_5:
		case R.id.but_6:
		case R.id.but_7:
		case R.id.but_8:
		case R.id.but_9:
		case R.id.but_point:
			if (clear_flag) {
				clear_flag = false;
				str = "";
				et_input.setText(" ");
			}
			et_input.setText(str + ((Button) arg0).getText());
			break;
		case R.id.but_minus:
		case R.id.but_plus:
		case R.id.but_divide:
		case R.id.but_multply:
			if (clear_flag) {
				clear_flag = false;
				et_input.setText(" ");
			}
			et_input.setText(str + " " + ((Button) arg0).getText() + " ");
		case R.id.but_clear:
			clear_flag = false;
			et_input.setText("");
			break;
		case R.id.but_del:
			if (clear_flag) {
				clear_flag = false;
				et_input.setText(" ");
			}
			if (str != null && str.equals("")) {
				et_input.setText(str.substring(0, str.length() - 1));
			}
			break;
		case R.id.but_equal:
			getResult();
			break;
		default:
			break;
		}
	}

	private void getResult() {
		String exp = et_input.getText().toString();
		if (exp == null || exp.equals("")) {
			return;
		}
		if (!exp.contains(" ")) {
			return;
		}
		if (clear_flag) {
			clear_flag = false;
			return;
		}
		clear_flag = true;
		double result = 0;
		String s1 = exp.substring(exp.indexOf(" "));
		String op = exp.substring(exp.indexOf(" ") + 1, exp.indexOf(" " + 2));
		String s2 = exp.substring(exp.indexOf(" ") + 3);
		if (!s1.equals(" ") && !s2.equals(" ")) {
			double d1 = Double.parseDouble(s1);
			double d2 = Double.parseDouble(s2);
			if (op.equals("+")) {
				result = d1 + d2;
			} else if (op.equals("-")) {
				result = d1 - d2;
			} else if (op.equals("X")) {
				result = d1 * d2;
			} else if (op.equals("/")) {
				if (d2 == 0) {
					result = 0;
				} else {
					result = d1 / d2;
				}
			}
			if (!s1.contains(".") && !s2.contains(".")) {
				int r = (int) result;
				et_input.setText(r + "");
			} else {
				et_input.setText(result + "");
			}
		} else if (!s1.equals(" ") && s2.endsWith(" ")) {
			et_input.setText(exp);
		} else if (s1.equals(" ") && !s2.endsWith(" ")) {
			double d2 = Double.parseDouble(s2);
			if (op.equals("+")) {
				result = 0 + d2;
			} else if (op.equals("-")) {
				result = 0 - d2;
			} else if (op.equals("X")) {
				result = 0;
			} else if (op.equals("/")) {
				result = 0;
			}
			if (!s1.contains(".")) {
				int r = (int) result;
				et_input.setText(r + "");
			} else {
				et_input.setText(result + "");
			}
		} else {
			et_input.setText("");
		}
	}
}


0 回复 有任何疑惑可以回复我~

这应该是想查看源码时才出现的提示吧,和程序没关系,Ctrl+鼠标左键 查看源码,如果没有源码就出现这个

0 回复 有任何疑惑可以回复我~

楼上何意?

0 回复 有任何疑惑可以回复我~

1 11

0 回复 有任何疑惑可以回复我~
首页上一页12下一页尾页

举报

0/150
提交
取消
Android攻城狮的第一门课(入门篇)
  • 参与学习       312585    人
  • 解答问题       4633    个

想快速掌握Android应用开发基础,选择学习这门课程就对了。

进入课程

当我点击数字时出现了这个错误,请问是哪里出错?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信