C# 控制台应用程序中的简单计算器 class
Simple Calculator class in a C# Console Application
我是 c# 的初学者,我有作业,所以我需要你的帮助,这是我现在所做的,
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace SimpleCalculator{
class SimpleCalculator {
double number1;
double number2;
double result;
double stored;
Boolean isStored;
public SimpleCalculator() {}
public double Add()
{
result = (this.number1 + this.number2);
return result;
}
public double Subtract()
{
result = (this.number1 - this.number2);
return result;
}
public double Multiply()
{
result = (this.number1 * this.number2);
return result;
}
public double Divide()
{
result = ((this.number1) /( this.number2));
return result;
}
public double SquareRootNumber1()
{
result = Math.Sqrt(this.number1);
return result;
}
public double SquareRootNumber2()
{
result = Math.Sqrt(this.number2);
return result;
}
public Boolean isMemoryUsed()
{
if (this.stored == 0){
this.isStored=false ;
return isStored;
}
else
this.isStored = true;
return this.isStored;
}
public double MemoryStore(double paramater_store1) {
this.stored = this.stored + paramater_store1;
return this.stored;
}
public double MemoryRecall()
{
if (MemoryStore(this.stored)==0)
return 0;
else
return MemoryStore(this.stored);
}
public double MemoryAdd(double paramater_store2)
{
this.stored = this.stored + paramater_store2 ;
return this.stored;
}
public double MemorySubtract(double paramater_store3)
{
this.stored = this.stored - paramater_store3;
return this.stored;
}
public double MemoryClear()
{
return this.stored = 0;
}
static void Main(string[] args)
{
SimpleCalculator calc = new SimpleCalculator();
calc.number1 = 3.14;
calc.number2 = 5.78;
Console.WriteLine("A is {0}", calc.number1);
Console.WriteLine("B is {0}", calc.number2);
double result = calc.Add();
Console.WriteLine("A + B = {0}", result);
result = calc.Subtract();
Console.WriteLine("A - B = {0}", result);
result = calc.Multiply();
Console.WriteLine("A * B = {0}", result);
Console.WriteLine("Sqrt(A) = {0}", calc.SquareRootNumber1());
Console.WriteLine("Sqrt(B) = {0}", calc.SquareRootNumber2());
Console.WriteLine("A = {0}", calc.number1);
Console.WriteLine("B = {0}", calc.number2);
try
{
result = calc.Divide();
Console.WriteLine("A / B = {0}", result);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
calc.number1=3.14;
calc.number2=0 ;
Console.WriteLine("A is {0} ", calc.number1);
Console.WriteLine("B is {0} ", calc.number2);
result = calc.Divide();
try {
result = calc.Divide();
Console.WriteLine("A / B = {0}", result);
}
catch (Exception ex) {
Console.WriteLine("The divisor can’t be zero ",ex.Message);
}
Console.WriteLine("Is memory being used at the beginning? {0}", calc.isMemoryUsed());
calc.MemoryStore(3.16);
Console.WriteLine("Is memory being used after MemoryStore? {0}", calc.isMemoryUsed());
Console.WriteLine("Memory = {0}", calc.MemoryRecall());
calc.MemoryAdd(5.67);
Console.WriteLine("Is memory being used after MemoryAdd? {0}", calc.isMemoryUsed());
Console.WriteLine("Memory = {0}", calc.MemoryRecall());
calc.MemorySubtract(7.89);
Console.WriteLine("Is memory being used after MemorySubtract? {0}", calc.isMemoryUsed());
Console.WriteLine("Memory = {0}", calc.MemoryRecall());
calc.MemoryClear();
Console.WriteLine("Is memory being used after MemoryClear? {0}", calc.isMemoryUsed());
calc.MemoryAdd(5.67);
Console.WriteLine("Is memory being used after MemoryAdd? {0}", calc.isMemoryUsed());
Console.WriteLine("Memory = {0}", calc.MemoryRecall());
calc.MemoryClear();
Console.WriteLine("Is memory being used after MemoryClear? {0}", calc.isMemoryUsed());
calc.MemorySubtract(7.89);
Console.WriteLine("Is memory being used after MemorySubtract? {0}", calc.isMemoryUsed());
Console.WriteLine("Memory = {0}", calc.MemoryRecall());
}
}
}
问题是,我得到了错误的结果:this is my result but the answers must be different!!
!!!!!!
BUT, It should be like this
有一些方法应该具有这些特征:
以下是一些重要问题:
Add() 方法将 Number1 和 Number2 相加,return返回结果。
Subtract() 方法从 Number1 中减去 Number2,然后 return 返回结果。
Multiply() 方法将 Number1 和 Number2 相乘,然后 return 返回结果。
Divide() 方法检查 Number2 是否为零。如果 Number2 为零,它应该抛出异常并显示消息“无法完成除法,因为 Number2 为零!”。如果 Number2 不为零,它应该 return 返回除法结果。
SquareRootNumber1() 和 SquareRootNumber2() 方法 return 分别计算 Number1 和 Number2 的平方根。
如果计算器内存中存在存储值,isMemoryUsed() 方法应 return 为真,如果内存中没有存储值,则为假。
MemoryStore(double) 方法将参数值存储到内存中。
MemoryRecall() 方法 return 返回内存的值。如果内存中没有存储值,它应该 return 零。
MemoryAdd(double) 方法将参数值添加到内存中。
MemorySubtract(double) 方法从内存中减去参数值。
MemoryClear() 方法清除内存中的值。
当调用 MemoryStore、MemoryAdd 和 MemorySubtract 方法时,一个值存储在内存中,然后 isMemoryUsed() 方法应该 return 为真。调用 MemoryClear() 方法后,isMemoryUsed() 方法应该 return false。 MemoryRecall() 方法不会更改由 isMemoryUsed() 方法 return 编辑的值。
您的程序应该给出与上面给出的程序相同的输出。
仔细指定成员变量及其可见性(public 或私有)。
想不到的结果是你考过记忆对不对?
1)MemoryStore不存储参数,它把参数添加到当前内存内容中,是不是你想要的?
2)回忆记忆是这样写的:
public double MemoryRecall()
{
if (MemoryStore(this.stored)==0)
return 0;
else
return MemoryStore(this.stored);
}
等同于:
public double MemoryRecall()
{
return MemoryStore(this.stored);
}
我是 c# 的初学者,我有作业,所以我需要你的帮助,这是我现在所做的,
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace SimpleCalculator{
class SimpleCalculator {
double number1;
double number2;
double result;
double stored;
Boolean isStored;
public SimpleCalculator() {}
public double Add()
{
result = (this.number1 + this.number2);
return result;
}
public double Subtract()
{
result = (this.number1 - this.number2);
return result;
}
public double Multiply()
{
result = (this.number1 * this.number2);
return result;
}
public double Divide()
{
result = ((this.number1) /( this.number2));
return result;
}
public double SquareRootNumber1()
{
result = Math.Sqrt(this.number1);
return result;
}
public double SquareRootNumber2()
{
result = Math.Sqrt(this.number2);
return result;
}
public Boolean isMemoryUsed()
{
if (this.stored == 0){
this.isStored=false ;
return isStored;
}
else
this.isStored = true;
return this.isStored;
}
public double MemoryStore(double paramater_store1) {
this.stored = this.stored + paramater_store1;
return this.stored;
}
public double MemoryRecall()
{
if (MemoryStore(this.stored)==0)
return 0;
else
return MemoryStore(this.stored);
}
public double MemoryAdd(double paramater_store2)
{
this.stored = this.stored + paramater_store2 ;
return this.stored;
}
public double MemorySubtract(double paramater_store3)
{
this.stored = this.stored - paramater_store3;
return this.stored;
}
public double MemoryClear()
{
return this.stored = 0;
}
static void Main(string[] args)
{
SimpleCalculator calc = new SimpleCalculator();
calc.number1 = 3.14;
calc.number2 = 5.78;
Console.WriteLine("A is {0}", calc.number1);
Console.WriteLine("B is {0}", calc.number2);
double result = calc.Add();
Console.WriteLine("A + B = {0}", result);
result = calc.Subtract();
Console.WriteLine("A - B = {0}", result);
result = calc.Multiply();
Console.WriteLine("A * B = {0}", result);
Console.WriteLine("Sqrt(A) = {0}", calc.SquareRootNumber1());
Console.WriteLine("Sqrt(B) = {0}", calc.SquareRootNumber2());
Console.WriteLine("A = {0}", calc.number1);
Console.WriteLine("B = {0}", calc.number2);
try
{
result = calc.Divide();
Console.WriteLine("A / B = {0}", result);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
calc.number1=3.14;
calc.number2=0 ;
Console.WriteLine("A is {0} ", calc.number1);
Console.WriteLine("B is {0} ", calc.number2);
result = calc.Divide();
try {
result = calc.Divide();
Console.WriteLine("A / B = {0}", result);
}
catch (Exception ex) {
Console.WriteLine("The divisor can’t be zero ",ex.Message);
}
Console.WriteLine("Is memory being used at the beginning? {0}", calc.isMemoryUsed());
calc.MemoryStore(3.16);
Console.WriteLine("Is memory being used after MemoryStore? {0}", calc.isMemoryUsed());
Console.WriteLine("Memory = {0}", calc.MemoryRecall());
calc.MemoryAdd(5.67);
Console.WriteLine("Is memory being used after MemoryAdd? {0}", calc.isMemoryUsed());
Console.WriteLine("Memory = {0}", calc.MemoryRecall());
calc.MemorySubtract(7.89);
Console.WriteLine("Is memory being used after MemorySubtract? {0}", calc.isMemoryUsed());
Console.WriteLine("Memory = {0}", calc.MemoryRecall());
calc.MemoryClear();
Console.WriteLine("Is memory being used after MemoryClear? {0}", calc.isMemoryUsed());
calc.MemoryAdd(5.67);
Console.WriteLine("Is memory being used after MemoryAdd? {0}", calc.isMemoryUsed());
Console.WriteLine("Memory = {0}", calc.MemoryRecall());
calc.MemoryClear();
Console.WriteLine("Is memory being used after MemoryClear? {0}", calc.isMemoryUsed());
calc.MemorySubtract(7.89);
Console.WriteLine("Is memory being used after MemorySubtract? {0}", calc.isMemoryUsed());
Console.WriteLine("Memory = {0}", calc.MemoryRecall());
}
}
}
问题是,我得到了错误的结果:this is my result but the answers must be different!!
!!!!!!
BUT, It should be like this
有一些方法应该具有这些特征:
以下是一些重要问题:
Add() 方法将 Number1 和 Number2 相加,return返回结果。
Subtract() 方法从 Number1 中减去 Number2,然后 return 返回结果。
Multiply() 方法将 Number1 和 Number2 相乘,然后 return 返回结果。
Divide() 方法检查 Number2 是否为零。如果 Number2 为零,它应该抛出异常并显示消息“无法完成除法,因为 Number2 为零!”。如果 Number2 不为零,它应该 return 返回除法结果。
SquareRootNumber1() 和 SquareRootNumber2() 方法 return 分别计算 Number1 和 Number2 的平方根。
如果计算器内存中存在存储值,isMemoryUsed() 方法应 return 为真,如果内存中没有存储值,则为假。
MemoryStore(double) 方法将参数值存储到内存中。
MemoryRecall() 方法 return 返回内存的值。如果内存中没有存储值,它应该 return 零。
MemoryAdd(double) 方法将参数值添加到内存中。
MemorySubtract(double) 方法从内存中减去参数值。
MemoryClear() 方法清除内存中的值。
当调用 MemoryStore、MemoryAdd 和 MemorySubtract 方法时,一个值存储在内存中,然后 isMemoryUsed() 方法应该 return 为真。调用 MemoryClear() 方法后,isMemoryUsed() 方法应该 return false。 MemoryRecall() 方法不会更改由 isMemoryUsed() 方法 return 编辑的值。
您的程序应该给出与上面给出的程序相同的输出。
仔细指定成员变量及其可见性(public 或私有)。
想不到的结果是你考过记忆对不对?
1)MemoryStore不存储参数,它把参数添加到当前内存内容中,是不是你想要的?
2)回忆记忆是这样写的:
public double MemoryRecall()
{
if (MemoryStore(this.stored)==0)
return 0;
else
return MemoryStore(this.stored);
}
等同于:
public double MemoryRecall()
{
return MemoryStore(this.stored);
}