C#相当于Java的scn.nextInt()

时间:2014-05-25 15:33:59

标签: c# input

在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());

3 个答案:

答案 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的原因