Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Scanner需要多个条目_Java_Java.util.scanner - Fatal编程技术网

Java Scanner需要多个条目

Java Scanner需要多个条目,java,java.util.scanner,Java,Java.util.scanner,下面是我用Java编写的一些代码,用于在游戏中设置玩家。我为atk、def和hp设置的扫描仪需要2-3个条目。很抱歉代码太乱,我才刚刚开始学习Java String NAME; int ATK; int DEF; int HP; int remainingPoints = 10; // pick name System.out.println("Enter name:"); Scanner p2Name = new Scanner(System.in); NAME = p2Name.nextLi

下面是我用Java编写的一些代码,用于在游戏中设置玩家。我为atk、def和hp设置的扫描仪需要2-3个条目。很抱歉代码太乱,我才刚刚开始学习Java

String NAME;
int ATK;
int DEF;
int HP;
int remainingPoints = 10;
// pick name
System.out.println("Enter name:");
Scanner p2Name = new Scanner(System.in);
NAME = p2Name.nextLine();
// pick type
System.out.println("Choose element theme: (water,fire,ice)");
Scanner p2Type = new Scanner(System.in);
String TYPE = p2Type.nextLine();
// atk
System.out.println("You have ten points to disperse " + "among your atk, def and hp");
System.out.println("Enter atk:");
Scanner p2Atk = new Scanner(System.in);
if (p2Atk.nextInt() <= 10) {
    ATK = p2Atk.nextInt();
    remainingPoints = remainingPoints - ATK;
} else {
    System.out.println("Your entry was invalid, your " + "atk is now five by default.");
    ATK = 5;
    remainingPoints = remainingPoints - ATK;
}
// def
System.out.println("You now have " + remainingPoints + ". Please enter def:");
Scanner p2Def = new Scanner(System.in);
if (p2Def.nextInt() <= remainingPoints) {
    remainingPoints = remainingPoints - p2Def.nextInt();
    DEF = p2Def.nextInt();
} else {
    System.out.println("Your entry was invalid, your " + "def is now one by default.");
    DEF = 1;
    remainingPoints = remainingPoints - DEF;
}
// hp
System.out.println("You now have " + remainingPoints + ". Please enter hp:");
Scanner p2Hp = new Scanner(System.in);
if (p2Hp.nextInt() <= remainingPoints) {
    remainingPoints = remainingPoints - p2Hp.nextInt();
    HP = p2Hp.nextInt();
} else {
    System.out.println("Your entry was invalid, your " + "hp is now one by default.");
    HP = 1;
    remainingPoints = remainingPoints - HP;
}
Player p2 = new Player(NAME, TYPE, ATK, DEF, HP);
System.out.println(p2.n);
System.out.println(p2.type);
System.out.println(p2.atk);
System.out.println(p2.def);
System.out.println(p2.hp); 
字符串名;
int ATK;
int-DEF;
int-HP;
整数剩余点=10;
//挑选名字
System.out.println(“输入名称:”);
扫描仪p2Name=新扫描仪(System.in);
NAME=p2Name.nextLine();
//拾取类型
println(“选择元素主题:(水、火、冰)”;
扫描仪p2Type=新扫描仪(System.in);
字符串类型=p2Type.nextLine();
//atk
System.out.println(“在atk、def和hp中,您有十个点要分散“+”);
System.out.println(“输入atk:”);
扫描仪p2Atk=新扫描仪(System.in);

如果(p2Atk.nextInt()创建了太多不正确的扫描仪对象

关于需要2-3个条目-您应该在temp变量中输入一次值,然后多次使用它

PFB校正代码:

String NAME = null;
String TYPE = null;
int ATK = 0;
int DEF = 0;
int HP = 0;
int remainingPoints = 10;

try {

    Scanner scanner = new Scanner(System.in);

    System.out.println("Enter name:");
    NAME = scanner.nextLine();

    System.out.println("Choose element theme: (water,fire,ice)");
    TYPE = scanner.nextLine();

    System.out.println("You have ten points to disperse "
            + "among your atk, def and hp");

    System.out.println("Enter atk:");
    int temp = scanner.nextInt();

    if (temp <= 10)
        ATK = temp;
    else {
        System.out.println("Your entry was invalid, your "
                + "atk is now five by default.");
        ATK = 5;
    }

    remainingPoints = remainingPoints - ATK;
    System.out.println("You now have " + remainingPoints
            + ". Please enter def:");           

    temp = scanner.nextInt();
    if (temp <= remainingPoints)
        DEF = temp;
    else {
        System.out.println("Your entry was invalid, your "
                + "def is now one by default.");
        DEF = 1;
    }
    remainingPoints = remainingPoints - DEF;
    System.out.println("You now have " + remainingPoints
            + ". Please enter hp:");

    temp = scanner.nextInt();
    if (temp <= remainingPoints)
        HP = temp;
    else {
        System.out.println("Your entry was invalid, your "
                + "hp is now one by default.");
        HP = 1;
    }
    remainingPoints = remainingPoints - HP;

    scanner.close();
} catch (Exception e) {
    e.printStackTrace();
}

Player p2 = new Player(NAME, TYPE, ATK, DEF, HP);

System.out.println(p2.n);
System.out.println(p2.type);
System.out.println(p2.atk);
System.out.println(p2.def);
System.out.println(p2.hp);
String NAME=null;
字符串类型=null;
int-ATK=0;
int DEF=0;
int HP=0;
整数剩余点=10;
试一试{
扫描仪=新的扫描仪(System.in);
System.out.println(“输入名称:”);
NAME=scanner.nextLine();
println(“选择元素主题:(水、火、冰)”;
类型=scanner.nextLine();
System.out.println(“你有10点要分散”
+“在您的atk、def和hp中”);
System.out.println(“输入atk:”);
int temp=scanner.nextInt();

如果(temp,则无需在每次提示输入时创建新的扫描仪对象

提示您输入的数据类型,无论是
int
double
还是
String
,您只需创建扫描对象一次——即:对于
system.in

但是,Java初学者在使用
scn.nextInt()
时可能会遇到问题。 您可以在提示解决该问题后放置
scn.nextLine()

但就我个人而言,我更喜欢使用
scn.nextLine()
String
的形式接收每个输入。如果是
int
输入,只需执行以下操作:

int num = Integer.parseInt(scn.nextLine());

示例:

Scanner scn = new Scanner(System.in);

String name = scn.nextLine();
String type = scn.nextLine();
String spell = scn.nextLine();
int health = Integer.parseInt(scn.nextLine());

问题是什么?为什么要创建多个
Scanner
对象?神圣的代码格式化蝙蝠侠!这是一堵需要编辑的文本墙!当你“刚刚学习Java”的时候,从一开始就没有养成良好的代码格式化/编写习惯,这对你自己来说是一种伤害。我强烈建议你修改代码的格式,不管你的技能水平如何。有没有理由调用
scanner.close()
在您的代码中?当您使用完扫描仪时,最好总是将其关闭@Tom@EvanBechtol你认为OP通过了
系统。在
中,你可以关闭该流?我不这么认为,因为该代码仅用于设置游戏玩家,所以OP很可能希望在游戏中获得更多用户输入正在关闭此游戏,因此关闭扫描仪是非常错误的。说得好!如果他计划获得更多输入,他不应该关闭。但是,在游戏结束时,他应该关闭它。@EvanBechtol如果他绝对肯定不再需要
系统。
,那么是的,他应该清理使用过的资源。“但是,Java初学者在使用
scn.nextInt()
时可能会遇到问题。在提示解决该问题后,您可以放置一个
scn.next()
。”调用
next()
不会解决该问题,因为如果“新行”分隔符后面没有其他标记,“新行”分隔符不会被占用。