这是我学习目的的代码......
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 :(
答案 0 :(得分:5)
我猜你正在打字' 1'然后按Enter键。 Enter键将回车符和换行符发送到您的程序。这两个字符的ASCII码分别为13和10。所以你实际上进入了13和10,即使你不知道它。
答案 1 :(得分:1)
您将opt定义为整数。
int opt;
opt = Convert.ToInt32(Console.ReadLine());
switch (opt)
{
case '1':
//...
然后你应该在交换机内检查整数值:
case 1:
// ....
希望它有所帮助。
答案 2 :(得分:1)
除了@Hans Kilian为纠正你的榜样所做的事情,你必须做以下事项 改变这个
opt = Convert.ToInt32(Console.Read());
到
opt = Convert.ToInt32(Console.ReadLine());
和这个
case '1':
到这个
case 1:
答案 3 :(得分:1)
你必须做的改变:
opt = Convert.ToInt32(Console.Read());
更改为opt = Convert.ToInt32(Console.ReadLine());
case '1':
更改为case 1:
opt是整数而非字符
a = Convert.ToInt32(Console.Read());
更改为a = Convert.ToInt32(Console.ReadLine());
c.opr2 = Convert.ToInt32(Console.Read());
更改为c.opr2 = Convert.ToInt32(Console.ReadLine());
问题是当你按下1并点击输入Console.Read()
从输入中读取\r
(10)和\n
(13)