请教一个计算器的问题,如何实现负数计算?

hello2013year hello2013year 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
百思不得其解,是别人的代码,在自己电脑运行,居然负数运算不了。 自己想不出它的代码了,要做负数运算的时候出错。 比如: -3-2 ;-10-5;-20-30 。 这种类型的计算。

package com.he;

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

public class CalculatorActivity extends Activity {
//加plus 减subtract 乘multiply 除divide
private EditText etResult; //文本框显示结果
private Button btPlus; //加
private Button btSub; //减
private Button btMultiply; //乘
private Button btDivide; //除
private Button btDelete; //删
private Button btCe; //清空
private Button btPoint; //点
private Button btDeng; //等于
private Button bt0;
private Button bt1;
private Button bt2;
private Button bt3;
private Button bt4;
private Button bt5;
private Button bt6;
private Button bt7;
private Button bt8;
private Button bt9;


/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
etResult=(EditText)findViewById(R.id.etResult);
btPlus=(Button)findViewById(R.id.btPlus);
btSub=(Button)findViewById(R.id.btSubtract);
btMultiply=(Button)findViewById(R.id.btMultiply);
btDivide=(Button)findViewById(R.id.btDivide);
btDelete=(Button)findViewById(R.id.btDelete);
btDeng=(Button)findViewById(R.id.btDeng);
btPoint=(Button)findViewById(R.id.btPoint);
btCe=(Button)findViewById(R.id.btCe);
bt0=(Button)findViewById(R.id.bt0);
bt1=(Button)findViewById(R.id.bt1);
bt2=(Button)findViewById(R.id.bt2);
bt3=(Button)findViewById(R.id.bt3);
bt4=(Button)findViewById(R.id.bt4);
bt5=(Button)findViewById(R.id.bt5);
bt6=(Button)findViewById(R.id.bt6);
bt7=(Button)findViewById(R.id.bt7);
bt8=(Button)findViewById(R.id.bt8);
bt9=(Button)findViewById(R.id.bt9);

etResult.setInputType(InputType.TYPE_NULL);


/*
* . 按钮
*/

btPoint.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
String str1=etResult.getText().toString();
if(str1.equals("")){
etResult.setText("");
}else{
etResult.setText(str1+btPoint.getText().toString());
}
}
});


/*
* 0---------9的数字按钮
*/
bt0.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
String str1=etResult.getText().toString();
if(str1.equals("")){
etResult.setText("");
}else{
etResult.setText(str1+bt0.getText().toString());
}
}
});

bt1.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
String str1=etResult.getText().toString();
etResult.setText(str1+bt1.getText().toString());
}
});

bt2.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
String str1=etResult.getText().toString();
etResult.setText(str1+bt2.getText().toString());
}
});

bt3.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
String str1=etResult.getText().toString();
etResult.setText(str1+bt3.getText().toString());
}
});

bt4.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
String str1=etResult.getText().toString();
etResult.setText(str1+bt4.getText().toString());
}
});

bt5.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
String str1=etResult.getText().toString();
etResult.setText(str1+bt5.getText().toString());
}
});

bt6.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
String str1=etResult.getText().toString();
etResult.setText(str1+bt6.getText().toString());
}
});

bt7.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
String str1=etResult.getText().toString();
etResult.setText(str1+bt7.getText().toString());
}
});

bt8.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
String str1=etResult.getText().toString();
etResult.setText(str1+bt8.getText().toString());
}
});

bt9.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
String str1=etResult.getText().toString();
etResult.setText(str1+bt9.getText().toString());
}
});

/*
* ce键 清空
*/
btCe.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
etResult.setText("");
}
});

/*
* Delete键
*/
btDelete.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
String str=etResult.getText().toString();
if(str.length()==0){
etResult.setText("");
}else{
etResult.setText(str.subSequence(0, str.length()-1));
}
}
});

/*
* + 、-、 * 、/四个按钮
*/
btPlus.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
final String str=etResult.getText().toString();
if(str.equals("")){
etResult.setText("");
}else{
etResult.setText(str+btPlus.getText().toString());
}
}
});

btSub.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
String str=etResult.getText().toString();
if(str.equals("-")){
etResult.setText(str+btSub.getText().toString());
}else{
etResult.setText(str+btSub.getText().toString());
}
}
});

btMultiply.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
String str=etResult.getText().toString();
if(str.equals("")){
etResult.setText("");
}else{
etResult.setText(str+btMultiply.getText().toString());
}
}
});

btDivide.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
String str=etResult.getText().toString();
if(str.equals("")){
etResult.setText("");
}else{
etResult.setText(str+btDivide.getText().toString());
}
}
});


/*
* = 按钮
*/
btDeng.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
String str=etResult.getText().toString();

/*if(str.charAt(str.length()-1)=='0' && str.charAt(str.length()-2)=='/'){
Toast.makeText(CalculatorActivity.this, "除数不能为0!", Toast.LENGTH_LONG).show();
}else{
}*/
if(str.indexOf('+')>0){
Double num1=Double.parseDouble(str.substring(0, str.indexOf('+')));
Double num2=Double.parseDouble(str.substring(str.indexOf('+')+1));
Double result=num1+num2;
etResult.setText(result.toString());
}


else if(str.indexOf('-')>0){
Double num1=Double.parseDouble(str.substring(0, str.indexOf('-')));
Double num2=Double.parseDouble(str.substring(str.indexOf('-')+1));
Double result=num1-num2;
etResult.setText(result.toString());
}

else if(str.indexOf('*')>0){
Double num1=Double.parseDouble(str.substring(0, str.indexOf('*')));
Double num2=Double.parseDouble(str.substring(str.indexOf('*')+1));
Double result=num1*num2;
etResult.setText(result.toString());
}else if(str.indexOf('/')>0){
Double num1=Double.parseDouble(str.substring(0, str.indexOf('/')));
Double num2=Double.parseDouble(str.substring(str.indexOf('/')+1));
if(num2==0){
Toast.makeText(CalculatorActivity.this, "除数不能为0!", Toast.LENGTH_LONG).show();
}else{
Double result=num1/num2;
etResult.setText(result.toString());
}
}
}
});
}
}
...全文

相关推荐

C#简单计算器,能实现连(+,-,*,/)

如果用户输入负号,`TryParse`会正确解析为负数。这就是一个基础的C#简单计算器的实现。你可以在此基础上扩展功能,比如添加括号支持、更复杂的运算符或更友好的用户界面。

Li103ZzZ

Android写一个简易计算器(可以实现连续计算)

发一个库存程序,好像是几个礼拜之前写的吧,是一个用安卓实现的简易的计算器,写这个小程序之前,看了很多人写的计算器,觉得使用一个 EditText,并将它设置为不可编写,是比较好的解决方案。 设计思路主要是: 根据用户的点击,在一个 EditText 中显示用户输入的运算步骤,例如 1 * 5 + 8 - 5 , 这个运算步骤首先是字符串类型的,然后在经过系列步骤将字符串解析成为相应的实数计算,最终...

Linkai12138

计算器 C语言 带括号负数都能处理

在本文中,我们将深入探讨如何使用C语言实现一个功能强大的计算器,它能够处理括号、负数以及浮点数,并且能正确识别空格。

miracle3310

Python实现的简易计算器

这是我花了两三天时间用Python写的一个带图形界面的简易计算器,能够计算+-/*% ( )等混合表达式,测试通过没什么问题,不过没有实现负数的功能,可以参考我写的相对应的技术博文。O(∩_∩)O

vincentluo91

计算器可以处理括号,小数,负数

总的来说,一个能够处理括号、小数和负数的计算器是强大且实用的工具,它能够协助我们进行各种复杂计算,同时在遇到可能的错误时给予提醒。

xiaobaiqingwa
评论 10
收藏 已收藏
分享
返回顶部
hello2013year
非技术区 23,404 成员 70,506 内容