Java - 如何在现有数组

时间:2015-10-31 19:34:39

标签: java arrays oop input

我是Java的新手。我正在开发一个Java控制台应用程序,它有一个字段和一个青蛙在其中跳跃,用户通过输入二维数组决定字段的大小,(有点像棋盘但不同之处在于用户决定如何大场应该是)。例如,用户以英尺为单位输入字段高度,以英尺为单位输入宽度。到目前为止,我已经设法做了一些类Field和类Position,它接受来自用户的输入并将其放在一个数组上(int [] [] fieldsize)。

班长控制器:

package project;
public class Controller {

    public static void main( String[] args ) {
        Field field = new Field();
        Position position = new Position();
        }
  }

类字段:

package project;

import java.util.Scanner;

public class Field{

    int y;
    int x;
    int[][] fieldsize;

    public Field() {
        Scanner scan = new Scanner(System.in);

         System.out
                 .println("Enter the size of the field in feets(width
        and length separated by space, x y):");
        x = scan.nextInt();
        y = scan.nextInt();

        int[][] fieldsize = new int[y][x];

        this.fieldsize= fieldsize;

    }

    public int[][] getFieldSize() {
        return fieldsize;
    }
}

我设法将用户输入的字段大小“收集”到int [] [] fieldsize数组中。

现在我想向用户询问青蛙的起始位置和前进方向,S(南),N(北),E(东),W(西),然后将青蛙添加到田地。例如,用户输入3 4 E.这应该将青蛙置于[3] [4]东(标题)位置。我该如何解决这个问题?

班级位置:

package project;

import java.util.Scanner;

public class Position {

           public Position() {
              int x;
              int y;
              String heading;
              Scanner scan = new Scanner(System.in);

                        System.out.println("Enter the starting position and heading for the frog, X Y and N, S, W or E position");
                        x = scan.nextInt();
                        y = scan.nextInt();
                        heading = scan.next(); 
                        //How do I put this inputs in the Field(fieldsize)?? So they get into this position in the field??


                        }

          }

描述我的意思有点困难,但我希望你们能帮助我! 提前谢谢!

1 个答案:

答案 0 :(得分:2)

行。在开始编码之前你应该考虑的第一件事 - 设计是什么。当代码出现在设计之前时,通常就会出现这样的问题。

所以第一个问题应该是: 我需要哪些课程,每节课应该做什么以及他们将如何互动。

  

对象是一个包含属性和的自包含组件   使某种类型的数据有用所需的方法。一个对象   属性是它所知道的,它的方法就是它所能做的。

例如 - 班级Field的对象可以做什么?它将如何与Position互动?我可以用Position做什么?

然后你开始设计类。您肯定不想在构造函数中读取用户输入。如果您希望明天从文件中获取输入并在下个月从云端或语音中获取,该怎么办?或者甚至更糟 - 如果输入错误怎么办?对象的状态是什么?

您通常需要向构造函数提供创建对象所需的所有数据。构造函数不应该关心从哪里得到它。你可以有一个public Field(int x, int y)并在阅读用户输入后在你的主类中调用它(我并不是说你应该有这个确切的构造函数,只是一个例子)。

您可能希望将位置设置为Field的方法(字段将包含位置)

field.setPosition(position);

或拥有Position的移动方法(你可以在场上拥有尽可能多的位置)

position.setField(field);
position.moveTo(x,y);

或者你甚至可以得出你根本不需要职位的结论,它只是Field的财产:

field.setCurrentX(x);
field.setCurrentY(y);

这里的设计非常适合你。在编码之前只需要设计。