Java 如何为我的程序获得正确的输出(字符串格式)?
这个问题有点措词不当(我知道),但我不知道我要找的东西的确切名称 我有一个HashMap,我正在打印HashMap的键和值。 所需的输出如下: 我实际上得到的是: 我目前的代码是这样的:Java 如何为我的程序获得正确的输出(字符串格式)?,java,printing,string-formatting,Java,Printing,String Formatting,这个问题有点措词不当(我知道),但我不知道我要找的东西的确切名称 我有一个HashMap,我正在打印HashMap的键和值。 所需的输出如下: 我实际上得到的是: 我目前的代码是这样的: System.out.println("\n\nTom Hanks' co-stars are"); costarMovieMap.forEach((k, v)-> System.out.printf("\t%s\t\t\t\t\t\t\t\t in \t\t\t\t\t\t\t%s\n",
System.out.println("\n\nTom Hanks' co-stars are");
costarMovieMap.forEach((k, v)-> System.out.printf("\t%s\t\t\t\t\t\t\t\t in \t\t\t\t\t\t\t%s\n", k, v));
太可怕了,我说得对吗?
我的猜测是,为了获得所需的输出,我必须指定%s
从某个行空间或某个地方开始。我不太确定。关于我能做什么有什么想法/建议吗
ps:嗯,有趣的是,我刚刚意识到我在截图上发现了一个bug。汤姆·汉克斯现在不能成为自己的搭档了,是吗:)。输出字符串时,可以指定宽度作为格式的一部分。这将在字符串中填充空格,直到达到所需的宽度 现在,我不打算计算空间,但它可能是这样的:
System.out.println("\n\nTom Hanks' co-stars are");
costarMovieMap.forEach((k, v)-> System.out.printf("\t%20s in %s\n", k, v));
PS有足够的创造性视频编辑,是的,汤姆·汉克斯可以成为他自己的搭档。你可以这样做,这将打印出与你预期结果相似的内容
costarMovieMap.forEach((k, v)-> System.out.printf("%1$-15s %2$-8s %s \n", k, "in", v));
可选参数_索引是一个
十进制整数,表示
论点在文章中的位置
参数列表。第一个论点是
由“1$”引用,第二个由
“2美元”等
可选标志是一组
修改输出的字符
总体安排有效标志集取决于
关于转换
可选宽度为十进制整数,表示最小值
要写入的字符数
输出
可选精度为a
非负十进制整数
用于限制
人物。具体行为
取决于转换
所需的转换是
字符,指示参数是如何执行的
应该格式化。有效数据集
给定参数的转换
取决于参数的数据类型
%1$
指第一次替换。在这种情况下,是钥匙。你是说必须有至少15个字符,如果没有,它将被填充
您正在寻找Java格式说明符字符串的
宽度组件,您可以使用它来代替所有这些\t
字符。请参阅并查找格式字符串语法
。照上面说的做,使用宽度。哈哈,是的,你是对的,有了足够的创造性视频编辑,很多事情都是可能的。感谢您的解决方案,这几乎就是我所寻找的,尽管第一个单词的宽度为20,这不是正确的输出。但它确实指引了我正确的方向。谢谢,不用担心。别忘了投票并接受这个答案,这样别人也更容易受益。