using System;
class myonec
{
public static void Main()
{
double myonecmaina = new double();
string str;
str= Console.ReadLine();
myonecmaina = double.Parse(str);
char js;
int a;
a = Console.Read();
js = (char)a; double d = new double();
str = Console.ReadLine();//为何执行到这里时候就提示错误呢??
d = double.Parse(str);//提示错误行数是在这里,不过经检查前面一行就没有执行
if (js == '+')
{
myonecmaina = myonecmaina +d; }
Console.WriteLine(myonecmaina);
Console.WriteLine(js); }
}
class myonec
{
public static void Main()
{
double myonecmaina = new double();
string str;
str= Console.ReadLine();
myonecmaina = double.Parse(str);
char js;
int a;
a = Console.Read();
js = (char)a; double d = new double();
str = Console.ReadLine();//为何执行到这里时候就提示错误呢??
d = double.Parse(str);//提示错误行数是在这里,不过经检查前面一行就没有执行
if (js == '+')
{
myonecmaina = myonecmaina +d; }
Console.WriteLine(myonecmaina);
Console.WriteLine(js); }
}
程序运行到这里就根本没法在输入值了,程序直接终止了。难道程序只允许有一个Console.ReadLine();输入
的时候你没有输入值,
所以double.Parse会出错
using System;
class myonec
{
public static void Main()
{
double myonecmaina = new double();
string str;
str= Console.ReadLine();
myonecmaina = double.Parse(str); double d = new double();
str = Console.ReadLine();//为何执行到这里时候就提示错误呢??
d = double.Parse(str);//提示错误行数是在这里,不过经检查前面一行就没有执行
char js;
int a;
a = Console.Read();
js = (char)a;
if (js == '+')
{
myonecmaina = myonecmaina +d; }
Console.WriteLine(myonecmaina);
Console.WriteLine(js); }
}
将中间那部分提前就可以正常执行为什么呢??
public static void Main()
{
double myonecmaina = new double();
string str;
str= Console.ReadLine();
myonecmaina = double.Parse(str);
str= Console.ReadLine();
char js;
int a;
a = Console.Read();
js = (char)a;
double d = new double();
d = double.Parse(str);
if (js == '+')
{
myonecmaina = myonecmaina +d; }
Console.WriteLine(myonecmaina);
Console.WriteLine(js); }
4
5
第一个Console.ReadLine()读的是4,第二个Read()读的是5,第三个ReadLine可能读得是你的回车 报错。你输入
3
3444
str = 3
a =3
str = 444
改成这样 a = int.Parse(Console.ReadLine());就可以了吧!
Console.ReadLine(); 1
Console.Read(); 2
Console.ReadLine(); 3
原因就是 3读到2的回车符了。 read只读取一个字符。