[英]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 ,它是一種動態數組(即自動增長) . 這將在很多方面為您提供幫助:
Collection
提供了豐富的 API 來處理元素。 通過利用此 API,您的代碼可以變得緊湊、性能更高、可維護等。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.