繁体   English   中英

Java-如何在现有数组中插入用户输入位置

[英]Java - How can I insert user input position in existing array

我是Java的新手。 我正在开发一个Java控制台应用程序,其中包含一个字段和一个青蛙,用户通过2D数组中的输入来确定字段的大小(有点像国际象棋棋盘,但区别在于用户可以决定如何大字段应该)。 例如,用户以英尺为单位输入场高,以英尺为单位输入宽度。 到目前为止,我已经设法完成了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 4E。这应该将青蛙放置在位置[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??


                        }

          }

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

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

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

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

例如-类Field的对象可以做什么? 它如何与Position互动? 我该如何处理该Position

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

通常,您需要向构造函数提供创建对象所需的所有数据。 构造函数应该不在乎从何处获得它。 您可以拥有一个public Field(int x, int y)并在读取用户输入后在您的主类中调用它(我不建议您应该有这个确切的构造函数,仅作为示例)。

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

field.setPosition(position);

或使用“ Position的移动方法(您可以在场上任意Position多个位置)

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

或者甚至可以得出结论,您根本不需要职位,而这仅仅是该字段的属性:

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM