繁体   English   中英

Java-格式化双精度数组

[英]Java - Format double array

我在下面创建了一个循环,该循环将在1和999之间“随机”显示大约50个数字。我的问题是我需要打印出循环外的整个数组(尝试),但是我需要使用相同的格式我已经在循环中打印了它。

我尝试了几种方法,但是它总是抛出错误,主要是与“非法转换”有关。

// Imports
import java.util.Arrays;
import java.text.DecimalFormat;

// Class
public class Random50
{
  public static void main(String[] args)
  {
    // Declaration
    double[] Random50Array = new double[51];
    DecimalFormat df = new DecimalFormat("000");
    int i;

    // Loops
    for(i = 0; i < Random50Array.length; i++)
    {
      Random50Array[i] = (int)(Math.random() * 999);
      System.out.print(df.format(Random50Array[i]) + ", ");
    }
    System.out.println("");
    System.out.println("");
    String RandomArray = (Arrays.toString(Random50Array));
    System.out.printf("%03d", RandomArray);
  }
 }

我感谢将来提供的任何指导。 :)

您可以将格式化后的字符串一起添加到循环中,然后一次将它们全部打印出来。

// ...
StringBuilder builder = new StringBuilder();
for(i = 0; i < Random50Array.length; i++)
{
  Random50Array[i] = (int)(Math.random()*999);
  String output = df.format(Random50Array[i])+ ", ";
  System.out.print(output);
  builder.append(output);
}

System.out.println("");
System.out.println("");
System.out.print(builder.toString());

请注意,您不应使用System.out.printf("%03d", "..."); 打印字符串,因为"%03d"表示您要传递的参数是数字。 这是您遇到错误的原因。

优化代码:不需要双数组,不是吗

 StringBuilder builder = new StringBuilder();
for(i = 0; i < Random50Array.length; i++)
{
  String output = df.format((int)(Math.random()*999)+ ", ";
  builder.append(output);
}

System.out.println("");
System.out.println("");
System.out.print(builder.toString());

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM