继承我的代码,显示我完全没有错误并且它有效但我的东西有一点输出问题
// Lab13TEXT03st.java
// This is the student starting version of the Lab13 assignment.
// Testing <main> methods are provided for the 80-point and 100-point versions.
// This means that this version will not compile as provided.
import java.util.ArrayList;
public class Lab13TEXT03st
{
public static void main(String[] args)
{
System.out.println("\nLAB26A 80-POINT VERSION\n");
Matrix m2 = new Matrix(3, 5, 100);
//m2.displayMatrix("Matrix m2 3 X 5 Display");
System.out.println();
int count = 100;
System.out.println("Matrix m1 Default Display"); //
System.out.println("Matrix has no elements"); //
System.out.println("");
int pos = 0;
for (int r = 0; r < m2.getRows(); r++)
{
//System.out.println("r = " + r); //
for (int c = 0; c < m2.getCols(); c++)
{
m2.setValue(r,c,count, pos);
pos++;
count++;
//System.out.println("r = " + r + " c = " + c + " and count = " + count); //
}
//System.out.println(""); //
}
m2.displayMatrix("Matrix m2 3 x 5 Consecutive Integers Display");
System.out.println();
Matrix m3 = new Matrix(3,3,100);
m3.displayMatrix("Matrix m3 3 X 3 Initialized to 100 Display");
System.out.println();
}
}
class Matrix {
private ArrayList list; // one-dimensional array stores matrix values
private int listSize; // total number of elements in the matrix
private int numRows; // number of rows in the matrix
private int numCols; // number of cols in the matrix
public Matrix(int r, int c, int value){
list = new ArrayList();
numRows = r;
numCols = c;
listSize = r * c;
//for(int i = 0; i < listSize; i++)
// list.add(new Integer(value));
}
public int getRows(){
return numRows;
}
public int getCols(){
return numCols;
}
public int getSize()
{
return listSize;
}
public int getValue(int r, int c)
{
int rowLength = getRows();
int colLength = getCols();
//System.out.println("r in get = " + r);
int position = (r * colLength) + c;
//int position = ((r + 1) * rowLength) - rowLength + c; // one to multi-dimensional array index conversion
//System.out.print("Pos get = " + position + "; ");
return ((Integer)list.get(position)).intValue();
}
public void setValue(int r, int c, int value, int pos)
{
int rowLength = getRows();
//int colLength = getCols();
//int position = ((r + 1) * rowLength) - rowLength + c; // one to multi-dimensional array index conversion
//System.out.println("Pos set = " + position + "; ");
list.add(pos,new Integer(value));
}
public void displayMatrix(String str)
{
System.out.println(str);
for(int j = 0; j < getRows(); j++){
for(int i = 0; i < getCols(); i++){
System.out.print(getValue(j, i) + " ");
}
System.out.println("");
}
}
}
我的输出错了,我需要一些帮助
我没有错误......这是我的输出
LAB26A 80-POINT VERSION
Matrix m1 Default Display
Matrix has no elements
Matrix m2 3 x 5 Consecutive Integers Display
100 101 102 103 104
105 106 107 108 109
110 111 112 113 114
Matrix m3 3 X 3 Initialized to 100 Display
Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
at java.util.ArrayList.RangeCheck(ArrayList.java:547)
at java.util.ArrayList.get(ArrayList.java:322)
at Matrix.getValue(Lab13TEXT03st.java:128)
at Matrix.displayMatrix(Lab13TEXT03st.java:147)
at Lab13TEXT03st.main(Lab13TEXT03st.java:49)
Process completed.
它需要像这样输出:
LAB13TEXT03 80-POINT VERSION
Matrix m1 Default Display
Matrix has no elements
Matrix m2 3 X 5 Display
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
Matrix m2 3 X 5 Consecutive Integers Display
100 101 102 103 104
105 106 107 108 109
110 111 112 113 114
Matrix m3 3 X 3 Initialized to 100 Display
100 100 100
100 100 100
100 100 100
请帮忙
答案 0 :(得分:2)
第二个矩阵(m3
)失败,因为您尚未初始化它,就像使用m2
一样。你从来没有在代码中的m3.setValue(...)
行写一些东西。或者,要使用默认值初始化矩阵,您需要在Matrix
的构造函数中取消注释这些行:
for(int i = 0; i < listSize; i++)
list.add(new Integer(value));