C# 如何接受两个输入之间的空格字符进行计算
我想在C#的控制台应用程序中对两个输入进行加法。我不希望加法的用户输入与C# 如何接受两个输入之间的空格字符进行计算,c#,input,C#,Input,我想在C#的控制台应用程序中对两个输入进行加法。我不希望加法的用户输入与 2 8 2 8 产出:10 我希望它是这样的 2 8 2 8 产出:10 如何接受两个输入之间的空格字符并将其相加?我应该使用一个int变量还是两个int变量作为两个输入?谢谢。您需要按如下方式对输入进行string.Split() var inp = Console.ReadLine(); var split = inp.Split(' '); if (split.Length == 2 &a
2
8
2 8
产出:10
我希望它是这样的
2
8
2 8
产出:10
如何接受两个输入之间的空格字符并将其相加?我应该使用一个int变量还是两个int变量作为两个输入?谢谢。您需要按如下方式对输入进行string.Split()
var inp = Console.ReadLine();
var split = inp.Split(' ');
if (split.Length == 2
&& int.TryParse(split[0], out var a) // assumes C#7 feature of inline var declaration
&& int.TryParse(split[1], out var b) // for out parameters, else declare ints earlyer
)
{
// do something with a and b which are ints....
}
else
{
// either not enough or too many or non-int input by the usere. handle it.
}
只是为了好玩:如果你想对输入非常宽容,就像一行程序一样(我不,在生产代码中不做这样的事情;o),你可以这样做:
// needs: using System.Linq; in addition to using System;
var any = false;
var sum = 0l;
Console.WriteLine( // write something
Console.ReadLine() // what you read via console input
.Split(' ') // thats being split by' '
.Where(part => int.TryParse(part, out var _)) // only use things parsable as int
.Aggregate("", (acc, part) => // for each thing you got, create a string starting
{ // with an empty string
any = true; // remeber we had some valid input
if (acc.Length > 0) // already something in string?
acc += " + "; // add " + " to it
acc += part; // add the string that is parsable to int to result
sum += int.Parse(part); // it is parseable, so parse and add up
return acc; // return what we have agg'ed so far to next cycle
}) + (any ? $" = {sum}" : "No valid numbers in input."));
// check if we got any, if so add sum to the console output, else the agg is ""
// and we output our "error" message
它将使用输入中的每个“正确”整数,并打印出正确整数的完整加法,如果它们适合长
。它将忽略任何不可解析为整数的数字,因此不会添加in.MaxValue+1
(太大),也不会添加小数。如果未检测到有效输入,您将收到一条消息:
输入:hdfh 5 2h6 7-3-9 222222 76.43 2 3 4-1000
输出:
5+6+7+-3+-9+2+3+4+-1000=-985
你必须一步到位。然后你必须把它分开,然后再计算
startPoint:
int output = 0;
Console.Write("Input : ");
string input = Console.ReadLine();
string[] inputArray = input.Split(' ');
foreach (string eachInputValue in inputArray)
{
try
{
output += Convert.ToInt32(eachInputValue);
}
catch (Exception ex)
{
Console.WriteLine("\nPlease input numeric type\n");
goto startPoint;
}
}
Console.Write("Output : " + output);
Console.ReadKey();
}
感谢@PatrickArtner和@IvanStefanov提醒我代码的盲点。查找
String.Split
以及如何将字符串转换为数字……欢迎使用堆栈溢出!检查如何创建“如何做”示例,以便更好地回答您的问题。@nelek您能用代码给出一个示例吗?@JulianAung Patrick已经写过了。split.Length==2
?您是对的,因为在他的示例中,他要求两个数字。。。我的观点是,如果有两个以上的数字…@IvanStefanov,那么用户输入错误,惩罚他,让他戴上镣铐或戳他的眼睛;)@伊万斯特凡诺夫改变了我的想法,提出了一个非常宽松的版本——原因是我的地窖里满是戴着镣铐的错误输入者already@PatrickArtner你说得对D;)我们将得到applecow…;)首先,检查/尝试您的代码并尝试思考各种可能性,这里没有人会说“我知道的比您多”…您的代码可能会出现异常…您在Patrick之后5分钟提供答案,这样您就可以看到有关TryParse
…无论如何,没有人会让您泄气,但没有人会“攻击”“你也是。帕特里克对他的评论很认真,我只是说了点幽默,没有侮辱你。我很抱歉,但我不知道牛头苹果或苹果树是什么意思。我认为这是“给谁一个思考的机会”。我说了这些。我找不到applecow的mean=“想想你代码的异常可能性。我的英语是垃圾,所以我真的很抱歉:(不管:)如果你想尝试了解一些linq:我在我的答案中添加了一个linq示例,它有点高级-通过评论进行记录。看看你是否能了解它:)linq有时真的很有用。哇,一个转到-有一段时间没看到了:)+1