如何使用for循环修复未对齐的数组列表显示



你好,你能帮我写代码吗?当我把它显示到命令提示符时,第二个ArrayList没有正确显示。

这是我的代码:

import java.util.Scanner;
import java.util.ArrayList;
public class Arraylist{
public static void main(String[] args) {
ArrayList<String> name = new ArrayList<String>();
name.add("Darenz");
name.add("Jason");
name.add("Kurt");
name.add("David");
name.add("Damiar");
ArrayList<Integer> grade = new ArrayList<Integer>();
grade.add(11);
grade.add(10);
grade.add(12);
grade.add(12);
grade.add(10);
for (int i = 0; 0 < name.size() && i < grade.size(); i++){
System.out.println(name.get(i)+"          "+ grade.get(i));
}
}
}

这是我的代码的输出:

Darenz          11
Jason          10
Kurt          12
David          12
Damiar          10

由于第一列的宽度不一致,因此需要更改每行的间距。一种典型的方法是使用String.format(...),它使用格式字符串根据特定布局打印数据。

格式字符串的规范在这里。对于每条数据,格式字符串将指定转换:

所需的转换是一个字符,指示参数的格式。给定参数的有效转换集取决于该参数的数据类型。

在这种情况下,name.get(i)表示String,因此您希望使用%s来表示该数据。

然后您正在寻找宽度以添加间距:

可选的宽度是一个十进制正整数,表示要写入输出的最小字符数。

宽度是要写入输出的最小字符数。如果转换值的长度小于宽度,则输出将填充"("\u0020"(,直到字符总数等于宽度。默认情况下,填充位于左侧。如果给出了"-"标志,则填充将位于右侧。如果没有指定宽度,则没有最小值。

看起来您可能想要一个13个字符的列,左对齐,后面跟着一个空格,后面跟一个整数。这是您的格式字符串:"%-13s %d"。这是格式化后的最后一个字符串:

String.format("%-13s %d", name.get(i), grade.get(i))

尝试在for循环中执行此操作:

System.out.println(name.get(i)+"tt"+ grade.get(i));

上面制作了两个选项卡,并对齐文本。如果您愿意,也可以使用.printf((或.format((。

如果它还有问题,请告诉我!

编辑:如果名称太长,并且输出仍然显示不正确,则添加更多的t应该有效。

最新更新