将结果更改为string或Int c# Console

  • 本文关键字:Int Console string 结果 c#
  • 更新时间 :
  • 英文 :


我有一个代码:

using System;
using System.Linq;
using System.Text.RegularExpressions;

public class Program
{
public static void Main()
{
string input = Console.ReadLine();
var iCount = int.Parse(input);
int vMaxQty = 4;

//Sample input2 --> 1 5 4 1 1
string input2 = Console.ReadLine();
int val = input2.Split(' ').Sum(x=> int.Parse(x));
int countInput2 = Regex.Matches(input2, "\w").Count;

var result = 0;
if (countInput2 != iCount)
{
result = 0;
}
else
{
result = val/vMaxQty;
}
Console.WriteLine(result);
}
}

我的问题是:我怎么能改变结果,如果第一个条件(countInput2 != iCount)是真字符串。例如,result = Error!

Split字符串Parse具体化到集合中,但不求和,而是在集合上检查条件。如果check成功,Sum:

string input2 = Console.ReadLine();
int[] data = input2
.Split(' ')
.Select(item => int.Parse(item))
.ToArray(); 
int val = -1;
// You have data array instead of string; it's easy to validate it
if (iCount == data.Length) {
val = data.Sum();
Console.WriteLine(val);
}
else {
Console.WriteLine($"Invalid count: expected {iCount}, actual: {data.Length}");
}

一种方法是替换

var result = 0;
if (countInput2 != iCount)
{
result = 0;
}
else
{
result = val/vMaxQty;
}
Console.WriteLine(result);

if (countInput2 != iCount)
{
Console.WriteLine("Error!");
}
else
{
Console.WriteLine(val/vMaxQty);
}

但德米特里的回答实际上更复杂,因为它在不需要的情况下避免了求和。

还要注意:你在做整数运算!2/4 = 0 =>https://dotnetfiddle.net/iIpHTc不过,这可能是意料之中的。只是觉得值得注意。

最新更新