我必须创建一个程序,在一个数字的数字之和大于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;
}
}
}
答案 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();
}
}