簡體   English   中英

Java-具有用戶輸入的2D數組乘法表的行和列過多

[英]Java - A 2D Array Multiplication Table with user input has too many rows and columns

我不了解以下分配的特定部分,為什么我的帶有該分配的2D矩陣的循環無法生成正確的輸出。

我在輸出中得到太多的行和列。 我還需要幫助格式化輸出以使其可讀。

任務是執行以下操作:

public void getMultiplicationTable()

此方法將使用while循環來要求用戶輸入1到10之間的兩個整數。如果用戶提供的數字在指定范圍內,則while循環將停止。 否則,將打印一條錯誤消息,並要求用戶輸入另外兩個數字。

用戶給定的第一個數字將增加一個,然后用作行號,第二個數字將增加1,並將其用作二維數組的列號。 該方法將計算乘法表並將其存儲在數組中,然后顯示它。

例如,如果用戶輸入5&7,則您的代碼應創建一個包含6行8列的int數組,然后使用乘法表創建並加載該數組。 打印結果應如下所示:

0  0  0  0  0  0  0  0
0  1  2  3  4  5  6  7
0  2  4  6  8 10 12 14
0  3  6  9 12 15 18 21
0  4  8 12 16 20 24 28
0  5 10 15 20 25 30 35

我被卡住的地方是它說的那部分:

用戶給定的第一個數字將增加一個,然后用作行號,第二個數字將增加1,並將其用作二維數組的列號。 該方法將計算乘法表並將其存儲在數組中,然后顯示它。

我似乎無法獲得輸入的數字來用作行和列的長度,並且打印輸出最多可以打印10的倍數(盡管從技術上講我猜是9,因為我沒有使用+ 1)。 可以提供的任何幫助將不勝感激。 這是我到目前為止的內容:

public void getMultiplicationTable(){

    Scanner numsEnter = new Scanner(System.in);

    int[][] table = new int[10][10];

    int numRow = 0;
    int numCol = 0;

    System.out.println("Please enter in two numbers: ");

    while(true){
        numRow = numsEnter.nextInt();
        numCol = numsEnter.nextInt();
        if((numRow >= 1 && numRow <= 10) && (numCol >= 1 && numCol <= 10)){
            break;
        }else{
            System.out.println("These numbers are invalid, please enter two numbers between 0 & 10");
        }
    }

    numRow++;
    numCol++;

    for(int row=0; row < table.length; row++){
        for(int column = 0; column < table[row].length; column++){
            System.out.print(table [row] [column] = (row) * (column) );
        }
        System.out.println();
    }
}

這是我得到的輸出,使用5和7作為輸入的數字:

Please enter in two numbers: 
5
7

0000000000
0123456789 
024681012141618
0369121518212427
04812162024283236
051015202530354045
061218243036424854
071421283542495663
081624324048566472
091827364554637281

謝謝!

這是因為您聲明表是要開始的10x10數組,然后在for循環中根據條件使用該數組的長度。 在知道表的大小(或更改條件)之后,應創建表。

如果您只是先要求用戶輸入,則可以設置數組大小以匹配您的用戶輸入,然后再定義2D數組。 您目前正在將2D數組硬編碼為10x10,但是除此之外您的邏輯是正確的。

這是它的外觀。

    public void getMultiplicationTable(){

      Scanner numsEnter = new Scanner(System.in);

    System.out.println("Please enter in two numbers: ");

    int numRow = numsEnter.nextInt();
    int numCol = numsEnter.nextInt();

    int[][] table = new int[numRow+1][numCol+1];

    System.out.println("Please enter in two numbers: ");

    while(true){
        if((numRow >= 1 && numRow <= 10) && (numCol >= 1 && numCol <= 10)){
            break;
        }else{
            System.out.println("These numbers are invalid, please enter two numbers between 0 & 10");
            numRow = numsEnter.nextInt();
            numCol = numsEnter.nextInt();
        }
    }

    numRow++;
    numCol++;

    for(int row=0; row < table.length; row++){
        for(int column = 0; column < table[row].length; column++){
            System.out.print(table [row] [column] = (row) * (column) );
            System.out.print(" ");
        }
        System.out.println();
    }

    }

上面的代碼將輸入5 7輸出以下內容:

0 0 0 0 0 0 0 0 
0 1 2 3 4 5 6 7 
0 2 4 6 8 10 12 14 
0 3 6 9 12 15 18 21 
0 4 8 12 16 20 24 28 
0 5 10 15 20 25 30 35 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM