这是我正在做的练习:
编写一个程序,将格式为 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/