You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用for循环按指定水平格式打印字符串数组内容?

问题描述

我需要编写程序处理最多100行4列的字符串数组,数组内容由用户输入填充,当输入预设字符串时结束输入,并按指定表格格式(列对应不同字段)打印数组,要求必须使用for循环。但我在打印环节遇到问题:尝试的代码要么将数组内容垂直打印(每个元素单独一行),要么无间隔打印在一行。以下是我最后尝试的代码:

Console.WriteLine("         Your receipt");
Console.WriteLine("");
Console.WriteLine("Item name          Price        Quantity        Subtotal");

for (i = 0; i < count; i++)
{
    for (j = 0; j < 4; j++)
    {
       Console.WriteLine(string.Join("    ", items[i , j]));
    }
}

其中count用于记录用户添加的总行数,避免打印空元素。请问我的代码哪里出错了?

问题分析与解决

你这段代码的问题主要出在两点:

  1. 错误使用Console.WriteLine:WriteLine会在每次调用后自动换行,导致每个数组元素单独占一行,直接让内容变成垂直排列。应该用Console.Write输出同一行的所有元素,等整行的四个列都打印完,再用WriteLine换行。
  2. string.Join用法错误:string.Join的作用是把集合里的元素用分隔符拼接成字符串,但你只传了单个items[i,j],完全发挥不了它的作用,甚至会产生奇怪的输出(比如把字符串的每个字符用空格分隔)。

修正后的代码如下:

Console.WriteLine("         Your receipt");
Console.WriteLine("");
Console.WriteLine("Item name          Price        Quantity        Subtotal");

for (int i = 0; i < count; i++)
{
    // 遍历当前行的4列,用Write输出在同一行
    for (int j = 0; j < 4; j++)
    {
        // 用PadRight固定列宽,保证表格对齐,数值可按需调整
        Console.Write(items[i, j].PadRight(18));
    }
    // 整行打印完成后换行
    Console.WriteLine();
}

如果想要更精准的对齐效果,也可以用格式化字符串直接输出整行(若允许省略内层for循环的话,若要求必须用for循环,上面的写法即可):

for (int i = 0; i < count; i++)
{
    // 格式化字符串里的,-18表示左对齐,占18个字符宽度
    Console.WriteLine("{0,-18}{1,-15}{2,-15}{3,-15}", items[i,0], items[i,1], items[i,2], items[i,3]);
}

内容的提问来源于stack exchange,提问作者StatisticalPizza

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 20:23:19