我在下面创建了一个循环,它将在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);
}
}
我感谢任何未来的指导。 :)
答案 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());