循环如何格式化在Java中循环的打印行
我对Java编程相当陌生,在任何地方都找不到问题的答案。基本上,我已经成功地创建了一个程序,该程序构建了摄氏到华氏的转换和华氏到摄氏的转换图表,但是我的循环打印语句在数字9之后没有正确排列,类似于:
9.0 48.2 40.0 4.44
10.050.041.050.0
我需要使用两个单独的方法来计算转换,然后在main方法中调用它们。下面是我引用的println语句的主要方法:
public static void main(String[]args){
double celsius = 1;
double fahrenheit = 32;
while(celsius <= 50 && fahrenheit <= 120){
double toFarhenheit = celsiusToFahrenheit(celsius);
double toCelsius = fahrenheitToCelsius(fahrenheit);
DecimalFormat fardec = new DecimalFormat("#.##");
toFarhenheit = Double.valueOf(fardec.format(toFarhenheit));
DecimalFormat celsdec = new DecimalFormat("#.##");
toCelsius = Double.valueOf(celsdec.format(toCelsius));
System.out.println(celsius + " " + toFarhenheit + " " + fahrenheit +
" " +toCelsius);
celsius++;
fahrenheit++;
}
}
长话短说,是否有必要将printf与这种长print语句一起使用,以便数字彼此对齐
在过去,我使用printf%3d和%5d之类的方法来排列整数,但是,我无法在这个特殊的print语句中实现这一点
任何想法和/或帮助都将不胜感激
# 1 楼答案
使用
System.out.printf(...)
和格式字符串以常规列输出数据。避免使用\t
,因为它不可靠。例如,请看here最终,您的代码将如下所示:
其中formatString是一个使用printf格式说明符和宽度常量的字符串,该常量允许漂亮的输出。我将让您试验格式化字符串。它还将以“%n”结尾,因此它实际上成为一个带有格式的println
# 2 楼答案
使用“\t”或printf可能对您没有帮助,因为添加的任何空格都会考虑2个字符串文本。例如,9.0长3个字符,10.0长4个字符。。因此,在本例中,应用的空格是正确的,但字符串文字本身的长度不同
尝试如下更改代码,再使用一个哈希
# 3 楼答案
除了满船鳗鱼的气垫船所说的,使用这个系统。出来不带
"\t"
的printf是更好的解决方案。 例如,您应该能够执行以下操作:格式说明:
%0s
将输出标识为字符串$10
告诉它确保至少向输出中写入10个字符。因此,您将有一个固定的宽度李>有关更多详细信息,请参见http://docs.oracle.com/javase/6/docs/api/java/util/Formatter.html#syntax
[已经有一段时间没有使用java了,所以如果我不使用,会有人纠正我]
# 4 楼答案
使用\t对其进行格式化,因为这样会将它们均匀地隔开