C# 反向字符串,数组
我不明白这部分C# 反向字符串,数组,c#,arrays,string,reverse,C#,Arrays,String,Reverse,我不明白这部分 arr[name.Length-i]=name[i-1]; 让我们有一个5个字符的名称。所以arr的值是4,对吗 然后在循环中,循环变量也采用相同的长度,因此其初始值也将为4 在第一次迭代中,arr[4-4]的值将是arr[0],name[4-1]的值将是name[3],因此arr的第一个索引将与name的第四个索引一起复制 原始名称如何在arr中按相反顺序存储 static void Main(string[] args) { Cons
arr[name.Length-i]=name[i-1];
让我们有一个5个字符的名称
。所以arr
的值是4,对吗
然后在循环中,循环变量也采用相同的长度,因此其初始值也将为4
在第一次迭代中,arr[4-4]
的值将是arr[0]
,name[4-1]
的值将是name[3]
,因此arr
的第一个索引将与name
的第四个索引一起复制
原始名称如何在arr
中按相反顺序存储
static void Main(string[] args)
{
Console.Write("What is your name: ");
var name = Console.ReadLine();
var arr = new char[name.Length];
for (var i = name.Length; i > 0; i--)
arr[name.Length - i] = name[i - 1];
var reversed = new string(arr);
Console.WriteLine(reversed);
}
我在这里复制了原始代码的图像
using System;
public class Program
{
public static void Main()
{
Console.WriteLine("What is your name? ");
string name = Console.ReadLine();
var arr = new char[name.Length];
for (var i = name.Length; i > 0; i--){
arr[name.Length -1] = name[i-1];
}
var reversed = new string(arr);
Console.WriteLine(reversed);
}
}
看起来索引有点不对劲。您希望获取您输入的名称的长度(名称的结尾),并将从结尾开始的字符返回到单词的开头。下面我修改了一些变量名,为代码增加了一些含义
public static void CorrectedMain()
{
Console.WriteLine("What is your name? ");
string name = Console.ReadLine();
char[] reversedLetters = new char[name.Length];
for (var i = name.Length; i > 0; i--){
reversedLetters[i-1] = name[name.Length -i ];
}
var reversed = new string(reversedLetters);
Console.WriteLine(reversed);
}
如果在第一个块中输入Thomas,则返回T,如果在第二个块中运行代码,则返回samohT
这是一把小提琴。
回答您的问题:字符串和数组的索引为零。即,第一个元素位于索引0处。最后一个长度为-1 示例中的代码编写得不是很好。它打破了一些基本的编码原则
public static void Main()
{
Console.Write("What is your name: ");
string name = Console.ReadLine();
int n = name.Length;
char[] arr = new char[n];
for (int i = 0; i < n; i++)
arr[i] = name[n - 1 - i];
string reversed = new String(arr);
Console.WriteLine(reversed);
}
publicstaticvoidmain()
{
控制台。写下(“你叫什么名字:”);
字符串名称=Console.ReadLine();
int n=name.Length;
char[]arr=新字符[n];
对于(int i=0;i
请将代码作为文本,而不是图像。您是否在调试器中仔细检查了代码以查看发生了什么?将代码包含为text@LanceU.matthewst这看起来是一种奇怪的方式。一般来说,最好是向前迭代,而不是向后迭代(除非有特殊需要)。另外,在处理数组等时,尽量使用基于零的值,而不是基于1的值。也就是说,您的迭代器变量I应该介于0和name.Length-1之间(而不是name.Lenght-doen到1)。执行这些操作将使代码更简单易读。打印字符arr[name.Length-i]
和name[i-1]
在for循环的每次迭代中,您将了解在反转字符串时到底发生了什么。如果这不能给你一个答案,那么请详细说明你的问题你的代码是否有效?如果是这样的话,你有没有一行一行地,一个字符一个字符地穿过它?如果你这样做,你的问题就会得到回答。如果它不起作用,我希望你有一个或多个一个接一个的错误;这就是在这样的代码中发生的情况