编写了一个计算器类,程序如下
/*
* 计算器类
*/
public class Caculator {
int num1; //第一个数
int num2; //第二个数
int number; //计算结果
/*
* 运算方法
*/
public int Add(){ //定义加法
number = num1 + num2; //计算表达式
return number; //返回值,即为计算结果
}
public int Minus(){ //定义减法
number = num1 - num2; //表达式
return number; //返回差的结果
}
public int Multiple(){ //定义乘法
number = num1 * num2; //表达式
return number; //返回积的结果
}
public double Divide(){ //定义除法
number = num1 / num2; //表达式
return number; //返回商的结果
}
}import java.util.*;
public class TestCaculator {
/*
*测试计算器类
*/
public static void main(String[] args){
Scanner input = new Scanner(System.in);
Caculator No = new Caculator(); //创建Caculator类的对象
System.out.print("请输入第一个数:");
No.num1 = input.nextInt(); //控制台输入第一个数
System.out.print("请输入第二个数:");
No.num2 = input.nextInt(); //控制台输入第二个数
No.Add(); //调用加法
System.out.println("和为:" + No.Add()); //输出和
No.Minus(); //调用减法
System.out.println("差为:" + No.Minus()); //输出差
No.Multiple(); //调用乘法
System.out.println("积为:" + No.Multiple()); //输出积
No.Divide(); //调用除法
System.out.println("商为:" + No.Divide()); //输出商
}
}运行程序后发现当num1小于num2的整数情况下,商的结果总为0.0,请教哪里出问题了?
/*
* 计算器类
*/
public class Caculator {
int num1; //第一个数
int num2; //第二个数
int number; //计算结果
/*
* 运算方法
*/
public int Add(){ //定义加法
number = num1 + num2; //计算表达式
return number; //返回值,即为计算结果
}
public int Minus(){ //定义减法
number = num1 - num2; //表达式
return number; //返回差的结果
}
public int Multiple(){ //定义乘法
number = num1 * num2; //表达式
return number; //返回积的结果
}
public double Divide(){ //定义除法
number = num1 / num2; //表达式
return number; //返回商的结果
}
}import java.util.*;
public class TestCaculator {
/*
*测试计算器类
*/
public static void main(String[] args){
Scanner input = new Scanner(System.in);
Caculator No = new Caculator(); //创建Caculator类的对象
System.out.print("请输入第一个数:");
No.num1 = input.nextInt(); //控制台输入第一个数
System.out.print("请输入第二个数:");
No.num2 = input.nextInt(); //控制台输入第二个数
No.Add(); //调用加法
System.out.println("和为:" + No.Add()); //输出和
No.Minus(); //调用减法
System.out.println("差为:" + No.Minus()); //输出差
No.Multiple(); //调用乘法
System.out.println("积为:" + No.Multiple()); //输出积
No.Divide(); //调用除法
System.out.println("商为:" + No.Divide()); //输出商
}
}运行程序后发现当num1小于num2的整数情况下,商的结果总为0.0,请教哪里出问题了?
解决方案 »
- 求知识帝~关于,数据库,XML,properties读取速度和性能问题
- 静态上下文不能引用非静态方法 为什么呢 以前这样写就是可以的
- 用JBuilder开发类似在IE右键"XX"下载.然后调用软件主程序,并传值进去..
- jni 调 dll问题
- 应该怎样写正则表达式
- 请高手帮帮忙,怎样同过DatabaseMetaData 获得系统的存储过程
- 伙计做的动网论坛邮件地址收集工具,大家看有什么好的建议?
- JAVA菜鸟寻求师傅
- 新手求教啊!~~~~(在线等待!~~~~)
- 请教一个关于贪吃蛇的问题
- 初学网络编程写了一个很乱的程序,搞得我也很乱,希望能得到大家的指点
- import typeinfo.pets.*;是怎么回事?
你把num1 num2 设为 浮点型的就可以了
Scanner in=new Scanner(System.in);
至于出现0.0我认为是输入的两个数字相差小,以至于得到到的结果是零点几,然后对int而言零点几就是取值为零,再自动转型为double就为0.0了
number = num1 / num2; //问题1:接收结果的number为int型,你怎么能指望输出小数?所以number要换成float或double
//问题2:还是上面这行代码,num1/num2计算过程中会按num1的类型去自动做类型转换,所以num1你要强转成float或者double类型
return number;
}
下面给出修改后的代码double number; //接收结果的参数改成double类型,或者你再定义一个double number2来接收除数的结果
public double Divide(){
number = (double)num1 / num2; //这里把num1强转成double类型,计算过程中就会按照double去保存结果(否则计算的过程中就会自动转换成int型,就算number是double类型无法得到小数)
return number;
}