首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何从两个不同的数字中提取数字并形成一个新的数字

如何从两个不同的数字中提取数字并形成一个新的数字
EN

Stack Overflow用户
提问于 2017-09-30 13:51:40
回答 6查看 215关注 0票数 1

我在这里有以下问题:我的输入是几行2位数字,我需要使用第一个数字的第二个数字和下一个数字的第一个数字来创建一个新数字。示例:

代码语言:javascript
运行
复制
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。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2017-09-30 14:48:15

我喜欢oRole's answer,但我认为他们缺少了您在评论中提供的示例输入的几样东西。我还将指出代码中的一些错误。

首先,如果只给输入12,23,34,45,那么就不需要在for循环中调用Console.ReadLine。您已经获得了输入,您不需要再得到(从您所描述的)。

其次,除非您正在进行数学运算,否则没有必要将数值数据存储为ints,将其保存为string,特别是在本例中。(我的意思是,不是将Zip代码作为数字存储在数据库中,而是将其存储为字符串。)

现在,进入密码。你有正确的方法获得你的数据:

代码语言:javascript
运行
复制
var listOfNumbers = Console.ReadLine();

在这一点上,listOfNumbers等于"12,23,34,45"。如果将该变量作为字符串进行迭代,则将接受每个单独的字符,包括逗号。要获得要操作的每个数字,您需要使用string.Split

代码语言:javascript
运行
复制
var numbers = listOfNumbers.Split(',');

这会将该列表转换为四个不同的两个字符数(以字符串形式)。现在,您可以迭代它们,但是在对每个字符串中的字符进行操作时,不需要担心将它们转换为数字。此外,您还需要一个结果集合来将所有内容放入其中。

代码语言:javascript
运行
复制
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

代码语言:javascript
运行
复制
Console.WriteLine(string.Join(",", results));
票数 1
EN

Stack Overflow用户

发布于 2017-09-30 14:00:13

我希望这个代码片段能帮助你组合你的数字。模运算符(%)是指: 53 / 10 =5 Rest 3

这个例子显示了数字34和12的计算。

代码语言:javascript
运行
复制
int firstNumber = 34 - (34 % 10) // firstNumber = 30
int secondNumber = 12 % 10; // secondNumber = 2
int combined = firstNumber + secondNumber; // combined = 32

编辑(添加读取和输出代码)

代码语言:javascript
运行
复制
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);
}
票数 1
EN

Stack Overflow用户

发布于 2017-09-30 14:08:54

您可以使用字符串方法.Substring(..)来实现您想要的结果。

如果要将int-转换与用户输入结合起来,则可以:

代码语言:javascript
运行
复制
int numA = 23;
int numB = 34;
int resultAB = Convert.ToInt16(numA.ToString().Substring(1, 1) + numB.ToString().Substring(0, 1));

另一种选择是将用户输入作为字符串值,然后进行如下转换:

代码语言:javascript
运行
复制
string numC = "12";
string numD = "21";
int resultCD = Convert.ToInt16(numC.Substring(1, 1) + numD.Substring(0, 1));
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46503345

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档