【发布时间】:2018-03-21 13:21:42
【问题描述】:
我正在尝试从 2 个数组中获取格式化输出,其中一个是国家,另一个是人口,应该提供如下输出:
埃及 | 92592000 法国 | 66991000 日本 | 126860000 瑞士 | 8401120我收到的唯一提示是我应该计算每列所需的最大宽度,然后使用它来对齐值。 这是我迄今为止想出的,但在格式化时坚持要输出任何东西。
public static void main (String[] args) throws java.lang.Exception
{
String [] countries = {"Egypt", "France", "Japan", "Switzerland"};
int[] populations = {92592000, 66991000, 126860000, 8401120};
printTable(countries, populations);
}
public static void printTable(String[] countries, int[] populations){
int longestInput = 0;
for(int i = 0; i < countries.length; i++){
int countLength = countries[i].length();
int popLength = String.valueOf(populations[i]).length();
if(countLength + popLength > longestInput)
longestInput = countLength + popLength;
}
for(int i = 0; i < countries.length; i++)
System.out.format("%-10",countries[i] + " | " + populations[i]);
}
【问题讨论】:
-
您需要计算两个最大长度:国家和人口。然后你用最长的国家填充每个国家,用最长的流行填充每个人口,加入这些字符串并打印它们。
-
为什么你的 main 抛出 java.lang.Exception?
-
它是因为我尝试在底部格式化,如果我删除其他所有工作,或者可能来自导入 java.util.*;导入java.lang.*;导入java.io.*;我忘记放入sn-p
-
这是否意味着有例外?我认为您必须在格式中添加“转换”。看this answer。
-
看起来它可以帮助我现在尝试一下,我只有在尝试格式化输出时才会出现异常,因为如果我不正常工作