有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

循环如何格式化在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语句中实现这一点

任何想法和/或帮助都将不胜感激


共 (4) 个答案

  1. # 1 楼答案

    使用System.out.printf(...)和格式字符串以常规列输出数据。避免使用\t,因为它不可靠。例如,请看here

    最终,您的代码将如下所示:

    System.out.printf(formatString, celsius, toFarhenheit, fahrenheit, toCelsius);
    

    其中formatString是一个使用printf格式说明符和宽度常量的字符串,该常量允许漂亮的输出。我将让您试验格式化字符串。它还将以“%n”结尾,因此它实际上成为一个带有格式的println

  2. # 2 楼答案

    使用“\t”或printf可能对您没有帮助,因为添加的任何空格都会考虑2个字符串文本。例如,9.0长3个字符,10.0长4个字符。。因此,在本例中,应用的空格是正确的,但字符串文字本身的长度不同

    尝试如下更改代码,再使用一个哈希

    DecimalFormat fardec = new DecimalFormat("##.##"); 
    
  3. # 3 楼答案

    除了满船鳗鱼的气垫船所说的,使用这个系统。出来不带"\t"的printf是更好的解决方案。 例如,您应该能够执行以下操作:

    String myformat = "%0$10s";
    

    格式说明:

    1. %0s将输出标识为字符串
    2. $10告诉它确保至少向输出中写入10个字符。因此,您将有一个固定的宽度

    有关更多详细信息,请参见http://docs.oracle.com/javase/6/docs/api/java/util/Formatter.html#syntax

    [已经有一段时间没有使用java了,所以如果我不使用,会有人纠正我]

  4. # 4 楼答案

    使用\t对其进行格式化,因为这样会将它们均匀地隔开

    System.out.println(celsius + "\t" + toFarhenheit + "\t" + fahrenheit + 
           "\t" +toCelsius);