【发布时间】:2014-12-31 04:10:05
【问题描述】:
这是用于我学习目的的代码...
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Calculator
{
abstract class calculator
{
internal abstract int add();
internal abstract int sub();
internal abstract int mul();
internal abstract int div();
internal abstract double square();
internal abstract double underroot();
}
class mycalculator : calculator
{
public mycalculator() :base()
{
}
private int num1, num2;
public int opr1
{
get { return num1; }
set{num1 = value;}
}
public int opr2
{
get { return num2; }
set { num2 = value; }
}
internal override int add() {
return num1 + num2;
}
internal override int sub()
{
return num2 - num1;
}
internal override int mul()
{
return num1 * num2;
}
internal override int div()
{
if(num1 > num2){
return num1 / num2;
}else
{
//Console.WriteLine(num1 + " Must be greater than " + num2 + " and " + num2 + "can not be zero" );
return 0;
}
}
internal override double square()
{
return num1 * num1;
}
internal override double underroot()
{
return Math.Sqrt(num1);
}
}
class Program
{
static void Main(string[] args)
{
char choice = 'y';
while (choice == 'Y' || choice == 'y')
{
Console.WriteLine("\n\nPlease Select your Operation....!\n\n\n\n\n");
Console.WriteLine("Press 1 for Addtion\n");
Console.WriteLine("Press 2 for Subtraction\n");
Console.WriteLine("Press 3 for Multiplication\n");
Console.WriteLine("Press 4 for Division\n");
Console.WriteLine("Press 5 for square\n");
Console.WriteLine("Press 6 for UnderRoot\n");
int opt;
opt = Convert.ToInt32(Console.Read());
mycalculator c = new mycalculator();
switch (opt)
{
case '1':
int a;
Console.WriteLine("Please Enter Your First Operand");
a = Convert.ToInt32(Console.Read());
// a = int.Parse(Console.ReadLine());
c.opr1 = a;
Console.WriteLine("Please Enter Your Second Operand");
c.opr2 = Convert.ToInt32(Console.Read());
Console.WriteLine(c.opr1 + " + " + c.opr2 + " = " + c.add());
break;
default:
Console.WriteLine("Invalid Choice");
break;
}
Console.WriteLine("\n\n\nDo you want to Perform more calculations??\n");
Console.WriteLine("Press 'Y' or 'y' to continue, any other key to exit");
choice = Console.ReadKey().KeyChar;
// Console.WriteLine(choice);
}
Console.Read();
}
}
}
只是省略了减法、乘法等的大小写,以减少代码大小...
问题是: 当我按 1 将两个数字相加时,它应该取第一个操作数和第二个操作数,然后,它应该显示结果......但是相反,它显示了
13 + 10 = 23
如果我为任何其他函数做,说它显示乘法
13*10 = 130
等等
13-10 = 3
程序不要求我输入值,只是显示结果,假定操作数 1 为 13,操作数 2 为 10....
我从来没有指定过类似的东西..
谁能指出这两个数字是从地狱的哪个地方自动传来的???
现在诅咒 c# 和 Visual Studio 2012 :(
【问题讨论】:
-
学习调试。首先设置断点,反复按 F10 和 F11 并检查变量。
-
在任何地方都使用
ReadLine()而不是Read() -
感谢大家帮助我,让我正确地学习这个概念......我是 c# 新手,现在开始学习它......我真的很感谢你们......但问题是,我只能接受一个答案,我觉得每个人都在为让我学习......所以......请告诉我接受哪一个??
标签: c# .net visual-studio visual-studio-2012 default-value