c# - 拆分字符串然后解析为整数

标签 c# .net

这是我正在做的练习:

编写一个程序,将格式为 abcd(例如 2011)的四位数字作为输入并执行以下操作:

• 计算数字的总和(在我们的示例中为 2+0+1+1 = 4)。

• 在控制台上以相反的顺序打印数字:dcba(在我们的示例中为 1102)。

• 将最后一位数字放在第一个位置:dabc(在我们的示例中为 1201)。

• 交换第二和第三位数字:acbd(在我们的示例中为 2101)。

这是我的代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication6
{
    class Program
    {
        static void Main(string[] args)
        {
            string FourDigitNum = Console.ReadLine();
            string[] digits = FourDigitNum.Split();
            int firstDigit = int.Parse(digits[0]);
            int secondDigit = int.Parse(digits[1]);
            int thirdDigit = int.Parse(digits[2]);
            int fourthDigit = int.Parse(digits[3]);
            int sum = firstDigit + secondDigit + thirdDigit + fourthDigit;
            string reversed = digits[3] + digits[2] + digits[1] + digits[0];
            string lastCharFirst = digits[3] + digits[0] + digits[1] + digits[0];
            string exchanged = digits[0] + digits[2] + digits[1] + digits[3];
            Console.WriteLine("The Sum is: {0}", sum);
            Console.WriteLine("The Reversed number is: {0}", reversed);
            Console.WriteLine("The Last Digit is First: {0}", lastCharFirst);
            Console.WriteLine("The Second and Third Digit Exchanged: {0}", exchanged);
        }
    }
}

当我使用 1100 作为输入时出现的错误是:

Unhandled Exception: System.IndexOutOfRangeException: Index was outside the boun ds of the array. at ConsoleApplication6.Program.Main(String[] args) in c:\Users\User1\Document s\Visual Studio 2013\Projects\ConsoleApplication6\Program.cs:line 16

编辑:非常感谢,我误解了 Split();工作了。这是我的最终工作代码:

namespace ConsoleApplication6
{
    class Program
    {
        static void Main(string[] args)
        {
            string digits = Console.ReadLine();
            int firstDigit = (int)Char.GetNumericValue(digits[0]);
            int secondDigit = (int)Char.GetNumericValue(digits[1]);
            int thirdDigit = (int)Char.GetNumericValue(digits[2]);
            int fourthDigit = (int)Char.GetNumericValue(digits[3]);
            int sum = firstDigit + secondDigit + thirdDigit + fourthDigit;
            Console.WriteLine("The Sum is: {0}", sum);
            Console.WriteLine("The Reversed number is: {3}{2}{1}{0}", firstDigit, secondDigit, thirdDigit, fourthDigit);
            Console.WriteLine("The Last Digit is First: {3}{0}{1}{2}", firstDigit, secondDigit, thirdDigit, fourthDigit);
            Console.WriteLine("The Second and Third Digit Exchanged: {0}{2}{1}{3}", firstDigit, secondDigit, thirdDigit, fourthDigit);
        }
    }
}

最佳答案

不需要 Split,您假设通过执行 Split() 它将每个字符拆分为字符串数组的元素。它不是,没有任何参数的 Split() 将在空白字符上拆分,并且由于在您的字符串 1102 中您没有任何空白字符,您将得到返回单个元素的数组。因此异常(exception)。

使用字符串作为字符数组,您可以访问每个索引并通过连接字符创建一个反向字符串。还要学习调试和单步执行代码,这将帮助您对代码进行故障排除。

作为提示使用:

int firstDigit = (int) Char.GetNumericValue(FourDigitNum[0]);

关于c# - 拆分字符串然后解析为整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30741830/

相关文章:

C# - 有效检查字符串是否包含特定位置的字符串(类似于 regionMatches)

c# - 使用 Epplus 在 C# 中对 Excel 进行 SQL 查询

c# - Linq OrderBy 排序规则

c# - 我的服务应该返回什么接口(interface)? IQueryable,IList,IEnumerable?

c# - 如何正确获取鼠标下的窗口?

c# - 在方法中途添加泛型类型约束

c# - 检查 .NET 动态程序集是暂时的还是持久的

.net - 尝试使用 Combres Nuget 包缓存图像 js 文件时遇到问题

c# - .Net/C# 世界中是否有与 NetBeans RCP 类似的东西?

c# - Xamarin C# - 如何从变量以编程方式引用资源文件