【问题标题】:2D Array Methods & Demo二维数组方法和演示
【发布时间】: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
    }
}

【问题讨论】:

    标签: java arrays


    【解决方案1】:

    假设您希望 anArray 成为您在输入过程中读入的数组,您应该命名该变量,因此...

    public static void main(String[] args){
    
        System.out.println("Let's create a 2Dim Array!");
    
        int[][] anArray = Array2DMethods.readInputs();
    
        System.out.println("max " + Array2DMethods.max(anArray)); 
    
        Array2DMethods.rowSum(anArray);
        Array2DMethods.columnSum(anArray);
    
        System.out.println("Square " + Array2DMethods.isSquare(anArray));
    
        Array2DMethods.displayOutputs(anArray);
    
    }
    

    假设您有一个函数f,它接受单个输入x。问题是您要求计算机评估f(x) 却从未告诉它x 是什么。但是,如果你给x 一个值,比如x = 3,那么问f(x) 就变得合法了,因为它变成了f(3),可以计算。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-08-28
      • 2014-05-23
      • 2018-08-31
      • 2017-03-18
      • 2016-04-17
      • 1970-01-01
      • 2021-12-14
      • 2011-04-28
      相关资源
      最近更新 更多