Java - форматировать двойной массив

1

Я создал цикл ниже, который будет отображать около 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);
  }
 }

Я ценю любые будущие рекомендации. :)

  • 1
    вам удалось нарушить почти все соглашения Java для форматирования кода, и ваша Java выглядит как C! - нет, но серьезно, какие строки выдают исключение, и вы должны также опубликовать трассировку стека.
  • 0
    RandomArray является объектом String, а% d обозначает десятичное целое число. Вот почему вы получаете исключение незаконного формата.
Показать ещё 1 комментарий
Теги:
arrays
for-loop
printf

2 ответа

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" означает, что аргумент, который вы передаете, является числом. Это является причиной ошибок, которые вы испытываете.

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню