在Java中,如果我们想从控制台读取用户输入,我们可以执行以下操作。
Scanner scn = new Scanner (System.in);
int x;
x = scn.nextInt(); //Receive integer input
在C#中,我假设我们这样做:
int x;
x = Console.Read(); //Receive integer input
但是当我输入7
时,输出为55
。
读取输入的其他2个选项是ReadLine()
可能用于读取字符串,而ReadKey()
可能用于检测您按下的键(如果我错了请纠正我)。
请不要告诉我,我们必须每次使用ReadLine并将整个值解析为int,这将是非常糟糕的:-(
编辑:在SO中,提出了类似的问题(c# Console.Read() and Console.ReadLine() problems),但所有解决方案都是使用int.TryParse
和一系列代码来接收{ {1}}或int
输入,我发现只是做一个简单的任务太不方便了。
我发现我们实际上可以这样做:
double
所以不要问一个重复的问题,
我的新问题:当我使用int a = int.Parse(Console.ReadLine());
接收scn.nextInt()
输入时,它是否等同于Java int a = int.Parse(Console.ReadLine());
?
答案 0 :(得分:1)
当我使用int a = int.Parse(Console.ReadLine())时,它是否等同于Java的scanner.nextInt();接收int输入?
是。当没有收到整数输入时,Java的Scanner.nextInt()
会抛出一个异常,就像.NET的int.Parse(Console.ReadLine())
一样。
答案 1 :(得分:1)
这可能晚了一年,但是......
static int GetInt() {
int integer = 0;
int n = Console.Read();
while (n == ' ' || n == '\n' || n == '\r' || n == '\t' || n == -1)
n = Console.Read();
while (n >= '0' && n <= '9') {
integer = integer * 10 + n - '0';
n = Console.Read();
}
return integer;
}
这与Java的nextInt()方法大致相同。它不支持当前的负值,但可以通过检查第一个读取值是否为&#39; - &#39;来实现。如果是,则将最终值乘以-1。
答案 2 :(得分:0)
是的,你需要使用ReadLine,解析输入并不是那么难。只需使用TryParse方法:
int input;
bool isValid = int.TryParse(Console.ReadLine(),out input);
if(isValid)
{
...
}
Console.Read
从控制台读取下一个字符,它会返回字符的ASCII
代码,这就是为什么你得到55
而不是7
的原因