Я создал цикл ниже, который будет отображать около 50 номеров "в случайном порядке" между 1 и 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);
}
}
Я ценю любые будущие рекомендации. :)
Вы можете добавить форматированные строки в цикле вместе и распечатать их сразу в конце.
// ...
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());
RandomArray
является объектом String, а% d обозначает десятичное целое число. Вот почему вы получаете исключение незаконного формата.