是否可以使用扫描仪输入不同对象的值?

时间:2019-06-11 04:06:29

标签: java

我正在构建我的第一个程序来计算手机游戏中对老板造成的伤害。它分别考虑了我的三个骑士的攻击,防御,健康和眩晕能力(动态),并将它们与拥有自己攻击和防御(静态)的boss相匹配。我为Knight和Boss的每个人定义了各自的属性,但是在主类中声明对象时,我不想硬编码其中的值,而是让用户输入自己的值来制作整个程序动态的。

我不确定如何将扫描仪用于此特定任务。

Knight knight1 = new Knight(15346, 17378, 1784, .25);

Knight knight2 = new Knight(13340, 15794, 1409, .25);

Knight knight3 = new Knight(13704, 15345, 1588, .25);

2 个答案:

答案 0 :(得分:2)

扫描仪允许您从输入源获取值。既可以是用户输入,也可以是文件内容。

扫描仪具有返回不同内置类型值的接口,具体取决于在“扫描”源中找到的内容。在您的情况下,您可以在循环内调用“ nextInt()”来获取骑士所需的4个值。 (请记住也调用nextLine()以使用用户键入的Enter键)。当您收集4个值时,您的代码将使用它们创建一个新的Knight对象。扫描程序不知道您的骑士等级,因此您只能使用它来询问创建骑士所需的int参数!

但是说实话:手动提供此类数据时要小心。您是否真的要在每次运行代码时键入16个值?因此,请考虑编写允许快速获取此类数据的代码,例如通过使用配置文件。

答案 1 :(得分:0)

输入字符串行,例如:“ 15346、17378、1784,.25”,然后除以,

public static void main(String[] args) {
    Scanner in = new Scanner(System.in);
    String line = in.nextLine();
    String[] lineArray = line.split(",");
    double param0=Double.parseDouble(lineArray[0]);
    double param1=Double.parseDouble(lineArray[1]);
    double param2=Double.parseDouble(lineArray[2]);
    double param3=Double.parseDouble(lineArray[3]);

    Knight knight1 = new Knight(param0, param1, param2, param3);
}