一次输入后代码停止

时间:2018-04-01 14:49:41

标签: c# algorithm

我必须创建一个程序,在一个数字的数字之和大于20之后中断。(一个条目后代码似乎中断(我输入数字5))这是我的尝试:

class Program
{
    static void Main(string[] args)
    {
        int sum = 0;
        while (sum < 20)
        {
            string number = Console.In.ReadLine();
            foreach (int num in number)
            {
                sum += num;
            }
            if (sum >= 20)
            {
                break;
            }
            sum = 0;
        }
    }
}

3 个答案:

答案 0 :(得分:1)

您的代码没有意义,但问题是ascii值而不是下面指出的int:

string numero = Console.In.ReadLine();
foreach (int num in numero) ----> This takes ascii value of the char NOT int value

尝试使用此代码:

public static int CharToInt(char input)
{
    int result = -1;

    if (input >= 48 && input <= 57)
    {
        result = input - '0';
    }

    return result;
}

static void Main(string[] args)
{
    int soma = 0;
    while (soma < 20)
    {
        Console.WriteLine("Soma is:" + soma);
        string numero = Console.In.ReadLine();
        foreach (char num in numero)
        {
            int value = CharToInt(num);
            soma += value;
        }
    }
    Console.WriteLine("Final Soma is:" + soma);
}

答案 1 :(得分:0)

您必须先使用Int.TryParse()将字符串数转换为整数。

答案 2 :(得分:0)

我走这条路:

class Program
{
    static void Main(string[] args)
    {
        int sum = 0;
        string number = Console.In.ReadLine();
        foreach (var num in number.Select(digit => int.Parse(digit.ToString())))
        {
            sum += num;
            if (sum >= 20)
                break; 
        }

        Console.WriteLine("Sum :{0}",sum);
        Console.ReadLine();
    }
}