我在这里有以下问题:我的输入是几行2位数字,我需要使用第一个数字的第二个数字和下一个数字的第一个数字来创建一个新数字。示例:
int linesOfNumbers = Convert.ToInt32(Console.ReadLine());
for(int i = 0,i<linesOfNumbers,i++)
{
     int numbers = Conver.ToInt32(Console.ReadLine());
     //that's for reading the input
}我知道如何将数字分解为digits.My,问题是如何将它们合并。例如,如果输入为12和21,则输出应为22。
发布于 2017-09-30 14:48:15
我喜欢oRole's answer,但我认为他们缺少了您在评论中提供的示例输入的几样东西。我还将指出代码中的一些错误。
首先,如果只给输入12,23,34,45,那么就不需要在for循环中调用Console.ReadLine。您已经获得了输入,您不需要再得到(从您所描述的)。
其次,除非您正在进行数学运算,否则没有必要将数值数据存储为ints,将其保存为string,特别是在本例中。(我的意思是,不是将Zip代码作为数字存储在数据库中,而是将其存储为字符串。)
现在,进入密码。你有正确的方法获得你的数据:
var listOfNumbers = Console.ReadLine();在这一点上,listOfNumbers等于"12,23,34,45"。如果将该变量作为字符串进行迭代,则将接受每个单独的字符,包括逗号。要获得要操作的每个数字,您需要使用string.Split。
var numbers = listOfNumbers.Split(',');这会将该列表转换为四个不同的两个字符数(以字符串形式)。现在,您可以迭代它们,但是在对每个字符串中的字符进行操作时,不需要担心将它们转换为数字。此外,您还需要一个结果集合来将所有内容放入其中。
var results = new List<string>();
// Instead of the regular "i < numbers.Length", we want to skip the last.
for (var i = 0; i < numbers.Length - 1; i++)
{
    var first = numbers[i];
    var second = numbers[i + 1]; // This is why we skip the last.
    results.Add(first[1] + second[0]);
}现在,您的results是数字"22"、"33"和"44"的集合。要将这些返回到单个字符串中,可以使用helper方法string.Join。
Console.WriteLine(string.Join(",", results));发布于 2017-09-30 14:00:13
我希望这个代码片段能帮助你组合你的数字。模运算符(%)是指: 53 / 10 =5 Rest 3
这个例子显示了数字34和12的计算。
int firstNumber = 34 - (34 % 10) // firstNumber = 30
int secondNumber = 12 % 10; // secondNumber = 2
int combined = firstNumber + secondNumber; // combined = 32编辑(添加读取和输出代码)
boolean reading = true;
List<int> numbers = new ArrayList();
while(reading)
{
    try
    {
        int number = Convert.ToInt32(Console.ReadLine());
        if (number > 9 && number < 100) numbers.Add(number);
        else reading = false; // leave reading process if no 2-digit-number
    }
    catch (Exception ex)
    {
        // leave reading process by typing a character instead of a number;
        reading = false;
    }
}
if (numbers.Count() > 1)
{
    List<int> combined = new ArrayList();
    for (int i = 1; i <= numbers.Count(); i++)
    {
        combined.Add((numbers[i-1] % 10) + (numbers[i] - (numbers[i] % 10)));
    }
    //Logging output:
    foreach (int combination in combined) Console.WriteLine(combination);
}发布于 2017-09-30 14:08:54
您可以使用字符串方法.Substring(..)来实现您想要的结果。
如果要将int-转换与用户输入结合起来,则可以:
int numA = 23;
int numB = 34;
int resultAB = Convert.ToInt16(numA.ToString().Substring(1, 1) + numB.ToString().Substring(0, 1));另一种选择是将用户输入作为字符串值,然后进行如下转换:
string numC = "12";
string numD = "21";
int resultCD = Convert.ToInt16(numC.Substring(1, 1) + numD.Substring(0, 1));https://stackoverflow.com/questions/46503345
复制相似问题