本来今天晚上是没打算做出这个计算器的,因为我完全没有做这个的一个思维,但是没想到两个小时在琼哥、珊哥、敏哥的帮助下完成了这个巨作,新手总是容易满足的。
具体代码是不记得了,但是根据昨天晚上的记忆再回忆回忆。。
首先创建一个工程,然后在工程里面,还需再创建一个文件。命名虽然没要求,但是“专家”建议还是有必要创建一个有意义的名字,方便编程时分清什么是什么。
这里我创的文件 “ calculator ” 中文意思是 “ 计算器 ”。
那么第一步: 在 “ calculator.h ”新建文件中,声明类名:
@interfacde Calculator : NSObject
@property float opValue1; //opValue1 意思是 操作符1
@property float opValue2; //opValue2 意思是 操作符2
@property char op; // 定义一个字符型“ op ”变量 字符型在代码中会被应用到*
- (float)work; //声明一个方法
@end
第二步: 在“ calculator.m ”新建文件中,实现:
@implemention Calcuaotr
- (float) work
{
if ( calc.op == ' + ' )
{ return calc.opValue1 + calc.opValue2;}
if( calc.op == ' - ' )
{ return calo.opValue1 - calc.opValue2; }
if( calc.op == ' * ' )
{ return calc.opvalue1 * calc.opValue2; }
if( calc.op == ' / ' )
{ return calc.opValue1 / calc.opValue2; }
}
return 0;
}
@end
以上两步我们都已经完成了,但是还少了一样东西,因为我们在“ calcutor ” 的接口文件和实现文件中都已经做了一些方法的声明和定义,但是其中“ calcutor ” 还是一个类。
缺少一个对象,总不能拿“ calcutor ” 去直接应用吧? 所以我们要在“ Viewcontroller.h " 文件中,定义一个类变量:
@interface ViewController : UIViewController
{
Caculator *calc; //定义一个 Caculator 类型的变量 calc
}
@end
在这里没有 “ calc ” 将其进行初始化。
if ( calc.op == ' + ')
{
calc.opValue2 =calc.opValue2 * 10;
self.resultLabel.text = [NSStringstringWithFormat:@"%.1f%c%.1f",calc.opValue1,calc.op,calc.opValue2];
}
else if ( calc. op == ' - ' )
{
calc.opValue2 =calc.opValue2 * 10;
self.resultLabel.text = [NSStringstringWithFormat:@"%.1f%c%.1f",calc.opValue1,calc.op,calc.opValue2];
}
else if ( calc. op == ' * ' )
{
calc.opValue2 =calc.opValue2 * 10;
self.resultLabel.text = [NSStringstringWithFormat:@"%.1f%c%.1f",calc.opValue1,calc.op,calc.opValue2];
}
else if ( calc. op == ' / ' )
{
calc.opValue2 =calc.opValue2 * 10;
self.resultLabel.text = [NSStringstringWithFormat:@"%.1f%c%.1f",calc.opValue1,calc.op,calc.opValue2];
}
else
{
calc.opValue1 =calc.opValue1 * 10;
self.resultLabel.text = [NSStringstringWithFormat:@"%.1f",calc.opValue1];
}
以上代码是我自己去想的,一个一个去判定,如果都不满足的话,那就实现 “ else ” 后面的语句,按下的数字仍然在 " calc.opValue1 " 中,后来琼哥帮我看了一下,原来可以简化:
- (IBAction)didClicked0:(id)sender {
if (calc.op =='+'
||calc.op =='-'
||calc.op =='*'
||calc.op =='/')
{
calc.opValue2 =calc.opValue2 * 10;
self.resultLabel.text = [NSStringstringWithFormat:@"%.1f%c%.1f",calc.opValue1,calc.op,calc.opValue2];
}
else
{
calc.opValue1 =calc.opValue1 * 10;
self.resultLabel.text = [NSStringstringWithFormat:@"%.1f",calc.opValue1];
}
这样的话,会方便很多。
就这样带入“didclickx ” 从0到9的10个按键中,完成对于 ' + '、‘ - ’、‘ * ’、‘ 、’ 的四则运算。
@implementation ViewController
- (IBAction)didClicked0:(id)sender {
if (calc.op =='+'
||calc.op =='-'
||calc.op =='*'
||calc.op =='/')
{
calc.opValue2 =calc.opValue2 * 10;
self.resultLabel.text = [ NSStringstringWithFormat:@"%.1f%c%.1f",calc.opValue1,calc.op,calc.opValue2 ];
}
else
{
calc.opValue1 =calc.opValue1 * 10;
self.resultLabel.text = [NSStringstringWithFormat:@"%.1f",calc.opValue1];
}
}
- (IBAction)didClicked1:(id)sender {
if (calc.op =='+'
||calc.op =='-'
||calc.op =='*'
||calc.op =='/')
{
calc.opValue2 =calc.opValue2 * 10 +1;
self.resultLabel.text = [ NSStringstringWithFormat:@"%.1f%c%.1f",calc.opValue1,calc.op,calc.opValue2 ];
}
else {
calc.opValue1 =calc.opValue1 * 10 +1;
self.resultLabel.text = [NSStringstringWithFormat:@"%.1f",calc.opValue1];
}
}
- (IBAction)didClicked2:(id)sender {
if (calc.op =='+'
||calc.op =='-'
||calc.op =='*'
||calc.op =='/')
{
calc.opValue2 =calc.opValue2 * 10 +2;
self.resultLabel.text = [NSStringstringWithFormat:@"%.1f%c%.1f",calc.opValue1,calc.op,calc.opValue2];
}
else {
calc.opValue1 =calc.opValue1 * 10 +2;
self.resultLabel.text = [NSStringstringWithFormat:@"%.1f",calc.opValue1];
}
}
- (IBAction)didclick3:(id)sender {
if (calc.op =='+'
||calc.op =='-'
||calc.op =='*'
||calc.op =='/')
{
calc.opValue2 =calc.opValue2 * 10 +3;
self.resultLabel.text = [NSStringstringWithFormat:@"%.1f%c%.1f",calc.opValue1,calc.op,calc.opValue2];
}
else {
calc.opValue1 =calc.opValue1 * 10 +3;
self.resultLabel.text = [NSStringstringWithFormat:@"%.1f",calc.opValue1];
}
}
- (IBAction)didclick4:(id)sender {
if (calc.op =='+'
||calc.op =='-'
||calc.op =='*'
||calc.op =='/')
{
calc.opValue2 =calc.opValue2 * 10 +4;
self.resultLabel.text = [NSStringstringWithFormat:@"%.1f%c%.1f",calc.opValue1,calc.op,calc.opValue2];
}
else {
calc.opValue1 =calc.opValue1 * 10 +4;
self.resultLabel.text = [NSStringstringWithFormat:@"%.1f",calc.opValue1];
}
}
- (IBAction)didclick5:(id)sender {
if (calc.op =='+'
||calc.op =='-'
||calc.op =='*'
||calc.op =='/')
{
calc.opValue2 =calc.opValue2 * 10 +5;
self.resultLabel.text = [NSStringstringWithFormat:@"%.1f%c%.1f",calc.opValue1,calc.op,calc.opValue2];
}
else {
calc.opValue1 =calc.opValue1 * 10 +5;
self.resultLabel.text = [NSStringstringWithFormat:@"%.1f",calc.opValue1];
}
}
- (IBAction)didclick6:(id)sender {
if (calc.op =='+'
||calc.op =='-'
||calc.op =='*'
||calc.op =='/')
{
calc.opValue2 =calc.opValue2 * 10 +6;
self.resultLabel.text = [NSStringstringWithFormat:@"%.1f%c%.1f",calc.opValue1,calc.op,calc.opValue2];
}
else {
calc.opValue1 =calc.opValue1 * 10 +6;
self.resultLabel.text = [NSStringstringWithFormat:@"%.1f",calc.opValue1];
}
}
- (IBAction)didclick7:(id)sender {
if (calc.op =='+'
||calc.op =='-'
||calc.op =='*'
||calc.op =='/')
{
calc.opValue2 =calc.opValue2 * 10 +7;
self.resultLabel.text = [NSStringstringWithFormat:@"%.1f%c%.1f",calc.opValue1,calc.op,calc.opValue2];
}
else {
calc.opValue1 =calc.opValue1 * 10 +7;
self.resultLabel.text = [NSStringstringWithFormat:@"%.1f",calc.opValue1];
}
}
- (IBAction)didclick8:(id)sender {
if (calc.op =='+'
||calc.op =='-'
||calc.op =='*'
||calc.op =='/')
{
calc.opValue2 =calc.opValue2 * 10 +8;
self.resultLabel.text = [NSStringstringWithFormat:@"%.1f%c%.1f",calc.opValue1,calc.op,calc.opValue2];
}
else {
calc.opValue1 =calc.opValue1 * 10 +8;
self.resultLabel.text = [NSStringstringWithFormat:@"%.1f",calc.opValue1];
}
}
- (IBAction)didclick9:(id)sender {
if (calc.op =='+'
||calc.op =='-'
||calc.op =='*'
||calc.op =='/')
{
calc.opValue2 =calc.opValue2 * 10 +9;
self.resultLabel.text = [NSStringstringWithFormat:@"%.1f%c%.1f",calc.opValue1,calc.op,calc.opValue2];
}
else {
calc.opValue1 =calc.opValue1 * 10 +9;
self.resultLabel.text = [NSStringstringWithFormat:@"%.1f",calc.opValue1];
}
}
以上四则运算的判定已经完成。
接下来是四则运算的功能实现:
加法:
- (IBAction)didClickedAdd:(id)sender {
calc.op = '+';
self.resultLabel.text = [ NSStringstringWithFormat:@"%.1f%c",calc.opValue1,calc.op ];
// 输出两个值,分别是 calc.opValue1 和 calc.op 然后赋给 “ self.resultLabel.text ” 的 “ label ” 中,从而显示出 “ %f ”和“ + ”两个值。
}
- (IBAction)didclickjian:(id)sender {
calc.op = '-';
self.resultLabel.text = [NSStringstringWithFormat:@"%.1f%c",calc.opValue1,calc.op];
// 输出两个值,分别是 calc.opValue1 和 calc.op 然后赋给 “ self.resultLabel.text ” 的 “ label ” 中,从而显示出 “ %f ”和“ + ”两个值。
}
- (IBAction)cheng:(id)sender {
calc.op = '*';
self.resultLabel.text = [NSStringstringWithFormat:@"%.1f%c",calc.opValue1,calc.op];
// 输出两个值,分别是 calc.opValue1 和 calc.op 然后赋给 “ self.resultLabel.text ” 的 “ label ” 中,从而显示出 “ %f ”和“ + ”两个值。
}
- (IBAction)chu:(id)sender {
calc.op = '/';
self.resultLabel.text = [NSStringstringWithFormat:@"%.1f%c",calc.opValue1,calc.op];
// 输出两个值,分别是 calc.opValue1 和 calc.op 然后赋给 “ self.resultLabel.text ” 的 “ label ” 中,从而显示出 “ %f ”和“ + ”两个值。
}
- (IBAction)clear:(id)sender {
calc.op = 0;
calc.opValue1 =0;
calc.opValue2 =0;
self.resultLabel.text=[NSStringstringWithFormat:@" "];
// 按下 ‘ c ’键 以后清除 " self.resultLabel.text " 里面的所有内容。
}
- (IBAction)didClickedEqual:(id)sender {
//计算结果
float result = [calc work]; 在这里引用 " work " 方法, 然后赋值到 “ float result ”中,再放进 “ self.resultLabel.text ”
self.resultLabel.text = [NSStringstringWithFormat:@"%.1f", result];
//计算完成,需要将计算器恢复到原始状态
calc.op = 0;
calc.opValue1 =0;
calc.opValue2 =0;
}