用户列号输入的2D数组

时间:2015-12-02 07:04:43

标签: java arrays arraylist

我正在尝试使用以下内容制作2D数组:

  • 用户选择要包含在数组中的多个随机数
  • 用户选择多个列以将这些数字放入2D数组

输出如下:

230 234 240 245 311

334 396 398 402 415

415 415 425 445 450

450 451 462 467 488

496 513 516 521 534

548 553 560 566 567

570 571 575 579 579

591 597 611 618 620

629 630 638 648 662

在这种情况下,用户输入的列数为5。他们可以选择任意数量的特定号码!这意味着我不能只输入5作为列号,但它必须基于他们的输入。我的代码片段在这里显示(从不同的包/类中拉出来,但是这个特定问题的唯一适用代码):

public class NumberGenerator {
    private ArrayList<Integer> numbers;
    private Random randomGenerator;

System.out.print("\nEnter the number of numbers (maximum 5000) you would like: ");
        input = this.scan.nextLine();
        int userOption = Integer.parseInt(input);
        while (userOption > 5000 || userOption < 1) {
            System.out.print("Enter the number of numbers (maximum 5000) you would like: ");
            input = this.scan.nextLine();
            userOption = Integer.parseInt(input);
        } this.userNumber.generateNumbers(userOption);

System.out.print("\nEnter the number of numbers per line (maximum 12): ");
        input2 = this.scan.nextLine();
        int userOption2 = Integer.parseInt(input2);
        while (userOption2 > 12 || userOption2 < 1) {
            System.out.print("Enter the number of numbers per line (maximum 12): ");
            input2 = this.scan.nextLine();
            userOption2 = Integer.parseInt(input2);
        } this.userColumns = (userOption2);

我的其余编码和解决方案都经过测试和运行,因此我知道这些代码片段正在运行。只需要一些帮助,找出如何编写一个新方法来调用2D数组,如图所示格式化。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

我假设您生成了所需的数字列表,并且您具有所需的列大小。然后您可以使用以下方法打印输出:

static void format(List<Integer> numberList,int columnSize){

        int totalLength = numberList.size();
        int index=0;
        for(; (index+columnSize) <= totalLength ;index+=columnSize ){
            System.out.println(String.format(getRowFormat(columnSize), numberList.subList(index, index+columnSize).toArray()));
            //or use this
            //System.out.printf(rowFormat.toString()+"\n", numberList.subList(i, i+columnSize).toArray());
        }
        if(index <= totalLength){//to handle pending values if any.
            System.out.println(String.format(getRowFormat(totalLength - index), numberList.subList(index, totalLength).toArray()));
        }
    }
    //handling format
    private static String getRowFormat(int columnSize) {
        StringBuilder rowFormat = new StringBuilder();
        for(int j=0;j<columnSize;j++){
            rowFormat.append("%10d");
        }
        return rowFormat.toString();
    }

从您的代码中将其称为:

format(numbers,this.userColumns);