Java - 格式双数组

时间:2014-11-30 05:29:02

标签: java arrays for-loop printf

我在下面创建了一个循环,它将在1&之间随机显示大约50个数字。 999。 我遇到的问题是我需要在循环外打印出整个数组(如图所示),但我需要的是我在循环中打印它的相同格式。

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

// 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);
  }
 }

我感谢任何未来的指导。 :)

2 个答案:

答案 0 :(得分:2)

您可以将循环中的格式化字符串附加在一起,并在结尾处一次打印出来。

// ...
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"表示您传递的参数是一个数字。这是您遇到错误的原因。

答案 1 :(得分:0)

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

 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());