jingyixx 发表于 2013-2-5 19:59:26

2012好想回家 发表于 2013-2-5 18:22 static/image/common/back.gif
只要在if里判断convert.Toint32(num) 能不能成功就可以了

这是在说?

jingyixx 发表于 2013-2-5 20:13:40

有个逻辑上的bug
如果c输入的是//之外的值,那么随后result2就不会被计算,但还是会判断if(result1 == result2)
所以第一次输入a=1 b=1 c=5 result1 = 0
i也会加一

s_ki11 发表于 2013-2-5 20:30:01

jingyixx 发表于 2013-2-5 20:13 static/image/common/back.gif
有个逻辑上的bug
如果c输入的是//之外的值,那么随后result2就不会被计算,但还是会判断if(result1 == ...

呃……我想到的解决办法可以加一个goto 但貌似最好不要用这个关键字
请教下有什么更好的方法。

jingyixx 发表于 2013-2-5 20:40:55

s_ki11 发表于 2013-2-5 20:30 static/image/common/back.gif
呃……我想到的解决办法可以加一个goto 但貌似最好不要用这个关键字
请教下有什么更好的方法。 ...

读取c放在一个do while里面
不是要求重新输入

另外我觉得初学还是用一些if else来捕获异常吧
一个try catch看着挺违和的

2012好想回家 发表于 2013-2-5 20:47:07

jingyixx 发表于 2013-2-5 19:59 static/image/common/back.gif
这是在说?

if里判断是否转换成功,若输入的是数字则转换成功,就进入if语句块里,若输入的不是数字 就转换失败 无法进入if语句块
你要是不理解我电脑登了给你写一下代码

jingyixx 发表于 2013-2-5 21:03:08

2012好想回家 发表于 2013-2-5 20:47 static/image/common/back.gif
if里判断是否转换成功,若输入的是数字则转换成功,就进入if语句块里,若输入的不是数字 就转换失败 无法 ...

thks
就是想知道实现细节

2012好想回家 发表于 2013-2-5 21:42:41

do
            {
                Console.WriteLine("input first num");
                a = Console.ReadLine();               
                Console.WriteLine("input second num:");
                b = Console.ReadLine();
                Console.WriteLine("input operator:1=plus,2=minuse,3=multiply,4=devide");
                c = Console.ReadLine();
               
                if( Convert.ToInt32(a) && Convert.ToInt32(b) && Convert.ToInt32(c) ) // this sentence
            {
                Console.WriteLine("input result:");
                result1 = Convert.ToInt32(Console.ReadLine());
                switch (c)
                {
.......................................................................

s_ki11 发表于 2013-2-5 21:45:25

2012好想回家 发表于 2013-2-5 21:42 static/image/common/back.gif
do
            {
                Console.WriteLine("input first num");


if( Convert.ToInt32(a) && Convert.ToInt32(b) && Convert.ToInt32(c) )
这种代码不报错么?

2012好想回家 发表于 2013-2-5 21:48:23

s_ki11 发表于 2013-2-5 21:45 static/image/common/back.gif
if( Convert.ToInt32(a) && Convert.ToInt32(b) && Convert.ToInt32(c) )
这种代码不报错么?

不会啊 若不是整形 就没办法转换 那结果就是false

jingyixx 发表于 2013-2-5 22:20:43

2012好想回家 发表于 2013-2-5 21:48 static/image/common/back.gif
不会啊 若不是整形 就没办法转换 那结果就是false

我这里通不过编译,对于一个int型使用&&报错的

2012好想回家 发表于 2013-2-5 22:22:44

这不该啊!
我跑一下 我很久没写过c#了。 不过理论上不会错啊
等会儿

jingyixx 发表于 2013-2-5 22:35:05

2012好想回家 发表于 2013-2-5 22:22 static/image/common/back.gif
这不该啊!
我跑一下 我很久没写过c#了。 不过理论上不会错啊
等会儿

强类型噢,不允许int->bool的隐式转换的
java和c#的共性
其他语言大多数可以的

如果Convert.ToInt32转换失败返回false,转换成功返回相应的Int32,就可以这样做了

2012好想回家 发表于 2013-2-5 22:35:40

唔 果断我方法错了 学太多混淆了=。=
我写了个例子 怎么判断 转换的是不是数字 看一下应该就懂啦~
string a=Convert.ToString(Console.ReadLine());
            stringb = Convert.ToString(Console.ReadLine());
            int num1,num2;
            if (int.TryParse(a, out num1) && int.TryParse(b, out num2))
            {
                Console.WriteLine("result is");
            }
            else
            {
                Console.WriteLine("failed");
            }
            Console.ReadKey();

2012好想回家 发表于 2013-2-5 22:38:14

jingyixx 发表于 2013-2-5 22:35 static/image/common/back.gif
强类型噢,不允许int->bool的隐式转换的
java和c#的共性
其他语言大多数可以的


刚刚在vs里跑了一下 发现行不通呢
语言学的略杂 混淆了。。。。。
嗯 这个判断一下是否转换为数字就可以了~o(* ̄▽ ̄*)o

霸王色騷氣 发表于 2013-2-7 20:00:17

乾巴跌= =
页: 1 [2] 3 4 5
查看完整版本: 从键盘上输入两个整数,由用户回答它们的和,差,积,...