【问题标题】:Java - How can I insert user input position in existing arrayJava - 如何在现有数组中插入用户输入位置
【发布时间】:2015-11-01 17:19:10
【问题描述】:

我是 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 [][] 字段大小数组中。

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

班级位置:

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??


                        }

          }

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

【问题讨论】:

    标签: java arrays oop input


    【解决方案1】:

    好的。在开始编码之前您应该考虑的第一件事 - 设计是什么。而这样的问题通常出现在代码出现在设计之前。

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

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

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

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

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

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

    field.setPosition(position);
    

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

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

    或者你甚至可以得出你根本不需要位置的结论,它只是字段的属性:

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

    这里的设计完全取决于您。在编码之前进行设计。

    【讨论】:

    • 谢谢你的回答,我去看看设计。
    猜你喜欢
    • 2023-03-30
    • 2011-12-13
    • 1970-01-01
    • 1970-01-01
    • 2021-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多