簡體   English   中英

在程序中存儲二維數組的最佳方式

[英]Best Way to Store a 2D Array within a Program

好的,所以我開始了一個面向 object 的小型程序,但我仍然需要幫助來了解 model 類。

I have 5 class files: UFile.java , Menu.java , UInput.java , UImport.java and UMath.java

還有一個 model class: Matrix.java

每個 class 文件都很好解釋

  • UFile.java :處理來自.csv的文件輸入並寫入.csv

    Menu.java提示用戶 select 想做什么

    UInput.java處理來自用戶的輸入並驗證它

    UMath.java處理任何與數學相關的算法

    UImport.java將數組導入程序

我已經用自己的測試文件測試了每個文件,它們工作正常

遇到的最大問題是如何成功地將我的矩陣數組存儲到程序中,一切都是動態的,所以沒有硬寫代碼,我需要能夠使用我的 UFile.java 導入它,然后使用我的 UMath.java 來對其執行乘法運算,同時還必須對其進行驗證以確保沒有單個元素是 null 或無效

如果這是一個愚蠢的問題,我深表歉意,但我進行了很多搜索,但找不到明確的答案

例如:如果我使用我的 menu.java 文件導入矩陣,這就是它的樣子

菜單.java:

    public static void main(String[] args){

    Scanner s = new Scanner(System.in);
    int selection;

    do{
        System.out.println("Please select\n" +
                        "1 Import Matrix\n" +
                        "2 Multiply Matrix\n" +
                        "3: Exit\n");
        selection = s.nextInt();

        switch(selection)
        {
            case 1: 
                importMatrix();
                break;
            case 2:
                multiplyMatrix();
                break;
            case 3:
                System.out.println("Goodbye!");
                break;
            default:
                System.out.println("Invalid Input");
        }
    } while(selection != 3);
}

然后導入矩陣 static class,這只是導致導入 class

private static void importMatrix(){

    UImport.fileIn();

在我開始遇到如何存儲矩陣的問題時,我再次能夠將硬編碼數組存儲為全局變量,但我不確定如何存儲它,因為它應該是動態的。

這就是我現在所擁有的,它不起作用,因為我需要能夠在整個程序中使用和編輯數組。

private static void fileIn() {
    String file;

    file = UInput.userIn("Please enter the file name");

    int[][] matrixA = UFile.readFile(file);

我的 class 仍然需要完成:

public class Matrix{

private int [][] MatrixA
private int [][] MatrixB


public Matrix(){


}


public Matrix(int [][] MatrixA, int [][] MatrixB){
    setMatrixA(inMatrixA);
    setMatrixB(inMatrixB);
}

public Matrix(Matrix inMatrix){
    MatrixA = inMatrix.getMatrixA();
    MatrixB = inMatrix.getMatrixA();
}

public void setMatrixA(String inMatrixA){
    if(validateMatrixA(inMatrixA))
    {
        MatrixA = inMatrixA;
    }
    else
    {
        throw new IllegalArgumentException("Invalid Matrix");
    }
}

public void setMatrixB(int inMatrixB){
    if(validateMatrixB(inMatrixB))
    {
        MatrixB = inMatrixB;
    }
    else
    {
        throw new IllegalArgumentException("Invalid Matrix");
    }
}


//ACCESSORS
public int [][] MatrixA(){
    return MatrixA;
}

public int [][] getMatrixB(){
    return MatrixB;
}

public boolean equals(Object inObj){
    boolean same = false;
    if(inObj instanceof Matrix)
    {
        Matrix inMatrix = (Matrix)inObj;
        same = MatrixA.equals(inMatrix.getMatrixA()) && 
               MatrixB.equals(inMatrix.getMatrixB());
    }
    return same;
}

public Matrix clone()
{
    return new Matrix(this);
}

public String toString()
{
    return ();
}

public String toFileString()
{

}
}

如果我錯過了任何重要的事情,請告訴我,我是初學者,所以我不確定

如果要存儲的元素數量等於數組的大小,那么固定大小的數組就可以了。 但是,如果不是這種情況(即,如果要存儲的元素數量可能小於或大於指定大小),則應使用Collection ,例如ArrayList ,它是一種動態數組(即自動增長) . 這將在很多方面為您提供幫助:

  1. 如果要存儲的元素數量小於指定大小,您將保存 memory。
  2. 當您需要存儲比您已經指定的更多的元素時,您無需更改代碼以增加數組的大小。
  3. Collection提供了豐富的 API 來處理元素。 通過利用此 API,您的代碼可以變得緊湊、性能更高、可維護等。

暫無
暫無

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

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