使用c#在字符数组中赋值转义序列
本文关键字:赋值 转义序列 数组 字符 使用 | 更新日期: 2023-09-27 18:13:50
我需要修改一个字符数组,包括新行(''n'),这样当我打印字符数组时,它应该打印格式化后的元素。
我不知道当我在循环中删除这些注释时它是如何工作的,为什么它不能在foreach循环中工作。
有谁能帮我一下吗? int row, col;
row = col = 2;
int j;
char[] ch = new char[ row * col + row ];
for( int i = 0; i < 2; i++ ) {
for( j = 0; j < 2; j++ ) {
ch[ i * col + j ] = 'a';
//Console.Write(ch[ i * col + j ]);
}
ch[ i * col + j ] = ''n';
//Console.Write(ch[ i * col + j ]);
}
Console.WriteLine("Character Array:");
foreach( char c in ch ) {
Console.Write(c);
}
我的输出应该是:
aa
aa
因为覆盖了"'n",所以需要为'n字符保留一个额外的列。
int row, col;
row = col = 2;
col = 2;
int j;
char[] ch = new char[ row * (col+1) ];
for( int i = 0; i < 2; i++ ) {
for( j = 0; j < 2; j++ ) {
ch[ i * (col+1) + j ] = 'a';
//Console.Write(ch[ i * col + j ]);
}
ch[ i * (col+1) + j ] = ''n';
//Console.Write(ch[ i * col + j ]);
}
Console.WriteLine("Character Array:");
foreach( char c in ch ) {
Console.Write(c);
}
您可以通过输出所写入数组的索引来轻松检查这些问题,在您的代码中,您将对数组的相同索引写入两次。
Edit:没有必要分配更多的字符row*col+row
是正确的,但是你需要(col+1)在循环内。
编辑2更好地使用(col+1)也在分配数组,现在它只工作,因为row = col
您正在重写您的值。使用下面的代码
int row, col;
row = col = 2;
int j;
char[] ch = new char[row * col + row];
for (int i = 0; i < ch.Length; i++)
{
for (j = 0; j < 2; j++)
{
ch[i + j] = 'a';
//Console.Write(ch[ i * col + j ]);
}
ch[i + j] = ''n';
i = i + j;
//ch[i * col + (j+1)] = ''n';
//Console.Write(ch[ i * col + j ]);
}
Console.WriteLine("Character Array:");
foreach (char c in ch)
{
Console.Write(c);
}
您的代码正在将值重新分配给相同的索引
试试下面的代码:
int row, col;
row = col = 2;
int j;
char[] ch = new char[ row * col + row ];
for( int i = 0; i < 2; i++ ) {
for( j = 0; j < 2; j++ ) {
ch[ i * col + (j+i) ] = 'a';
//Console.Write(ch[ i * col + j ]);
}
ch[ i * col + (j+i) ] = ''n';
//Console.Write(ch[ i * col + j ]);
}
Console.WriteLine("Character Array:");
foreach( char c in ch ) {
Console.Write(c);
}
Just do:
int col = 3;
您需要允许多一个列来存储您的'n
值