【发布时间】:2014-12-01 15:56:20
【问题描述】:
我的任务是设计和实现处理二维数组的方法。
它需要有一个实现类(Array2DMethods),它具有以下静态方法:
readInputs() 读取用户的行数和列数,然后读取该大小的相应条目。例如:如果用户在行数中输入 3,在列数中输入 3,它将声明一个包含 10 的数组并读取 9 个条目。
max(int [][] anArray)返回二维参数数组anArray中的最大值
rowSum(int[][] anArray)它返回anArray的第x行元素的总和
columnSum(int[][] anArray) 它返回 anArray 的 x 列中元素的总和 **注意不同长度的行
isSquare(int[][] anArray) 检查数组是否为正方形(意味着每一行都与 anArray 本身的长度相同)
displayOutputs(int[][] anArray) 显示 2 个 Dim Array 元素
它还需要一个测试类(Arrays2DDemo)来测试方法。
我已经评论了我遇到问题的部分。我不确定如何测试 readInputs 方法以外的方法,也不确定如何格式化要求用户为每一行输入数字的部分。
到目前为止,这是我的代码:
import java.util.Scanner;
class Array2DMethods {
public static int [][] readInputs(){
Scanner keyboard = new Scanner(System.in);
System.out.print(" How many rows? ");
int rows = keyboard.nextInt();
System.out.print(" How many columns? ");
int columns = keyboard.nextInt();
int [][] ret = new int[rows][columns];
for (int i = 0; i<ret.length; i++) {
for (int j = 0; j < ret[i].length; j++) {
System.out.print("please enter an integer: "); //Need to format like Enter [0][0]: ... Enter [0][1]: ...etc.
ret[i][j] = keyboard.nextInt();
}
}
return ret;
}
public static int max(int [][] anArray) {
int ret = Integer.MIN_VALUE;
for (int i = 0; i < anArray.length; i++) {
for (int j = 0; j < anArray[i].length; j++) {
if (anArray[i][j] > ret) {
ret = anArray[i][j];
}
}
}
return ret;
}
public static void rowSum(int[][]anArray) {
int ret = 0;
for (int i = 0; i<anArray.length; i++) {
for (int j = 0; j < anArray[i].length; j++) {
ret = ret + anArray[i][j];
}
}
}
public static void columnSum(int[][]anArray) {
int ret = 0;
for (int i = 0; i < anArray.length; i++) {
for (int j = 0; j < anArray[i].length; j++) {
ret = ret + anArray[i][j];
}
}
}
public static boolean isSquare(int[][]anArray) {
for (int i = 0, l = anArray.length; i < l; i++) {
if (anArray[i].length != l) {
return false;
}
}
return true;
}
public static void displayOutputs(int[][]anArray) {
System.out.println("Here is your 2Dim Array:");
for(int i=0; i<anArray.length; i++) {
for(int j=0; j<anArray[i].length; j++) {
System.out.print(anArray[i][j]);
System.out.print(", ");
}
System.out.println();
}
}
}
类 Arrays2DDemo:
public class Arrays2DDemo {
public static void main(String[] args){
System.out.println("Let's create a 2Dim Array!");
int [][] anArray = Array2DMethods.readInputs();
Array2DMethods.max(anArray);
Array2DMethods.rowSum(anArray);
//need to print out and format like this: Ex Sum of row 1 = 60 ...etc
Array2DMethods.columnSum(anArray);
//need to print out and format like this: Ex Sum of column 1 = 60 ...etc.
Array2DMethods.isSquare(anArray);
//need to print out is this a square array? true
Array2DMethods.displayOutputs(anArray);
//need it to be formatted like [10, 20, 30] etc
}
}
【问题讨论】: