猿问

关于Scanner 的调用的一大问题 输入 |诺基亚| 正常 |诺基亚 !| 报错

package com.myself;



import java.util.HashMap;

import java.util.Map;

import java.util.Scanner;


public class test {

public static Map<Integer,weapon> weapon=new HashMap<Integer,weapon>();

proplistinit c1 = new proplistinit();



public void  testaddshow()

{System.out.println("共有"+weapon.size()+"个道具");

for(int i=0;i<weapon.size();i++)

{

System.out.println("名称:"+weapon.get(i).name+"ID:"+weapon.get(i).ID+"攻击属性:"+weapon.get(i).attack);

    System.out.println("武器简介:"+weapon.get(i).instruction);

}

System.out.println("输入0 新增道具");

Scanner get = new Scanner(System.in);

int getget= get.nextInt();

if(getget==0){add();}else{System.err.println("ERROR!");testaddshow();}

}

public void add()

{

Scanner addprop = new Scanner(System.in);

System.out.println("自动赋予道具新ID");

//Integer getid =addprop.nextInt();

System.out.println("请输入需要添加的新道具的名称");

String getname=addprop.next();

System.out.println("请输入需要添加的新道具的攻击属性");

Integer getattack  = addprop.nextInt();

System.out.println("请输入需要添加的新道具的道具简介");

// Scanner getinfo = new Scanner(System.in);

//String Getinfo =getinfo.next();

String getinstruction = addprop.next();

System.out.println("信息收集完毕,正在生成新道具");

      

weapon.put(weapon.size(), new weapon(weapon.get(weapon.size()-1).ID+1,getname,getattack,getinstruction));

System.out.println("感谢等待,新道具已加入道具列表\n输入 0  查看 现有道具列表");

int turn = addprop.nextInt();

if(turn==0){testaddshow();}else{System.out.println("输入错误,输入 0  查看 现有道具列表");}

}

public static void main(String[] args) {

test c = new test();

c.testaddshow();

c.add();

}

}


刚学几天 表示不是很懂

我设置了一个Scanner 来接受多个键盘输入

本应该顺风顺水的结束 但是 突然发生了一件奇怪的事情

再输入 武器简介的时候  当我输入的是 

诺基亚   (诺基亚)的时候 一切正常

诺基亚  (诺基亚+空格)正常

诺基亚 !(诺基亚+!)正常

诺基亚 ! 的时候报错(诺基亚+空格+!)

十分纳闷  !

当然这也不是什么大问题  后来自己单独设置了一个Scanner 接受了 (诺基亚+空格+!) 正常

但是为什么  当我设置一个Scanner来接收的时候  会出现上述的情况呢!

以下是异常抛出

Exception in thread "main" java.util.InputMismatchException

at java.util.Scanner.throwFor(Scanner.java:864)

at java.util.Scanner.next(Scanner.java:1485)

at java.util.Scanner.nextInt(Scanner.java:2117)

at java.util.Scanner.nextInt(Scanner.java:2076)

at com.myself.test.add(test.java:50)

at com.myself.test.testaddshow(test.java:29)

at com.myself.test.main(test.java:55)

  感谢解惑!!

K丶k
浏览 1339回答 3
3回答

ziom

因为输入空格的时候,Scanner默认会跳到下一个nextXX()方法,所以应该是你在输入武器简介的时候,下面还有一个不能接收字符类型的nextXX()

大咪

异常的意思是输入不匹配异常……
随时随地看视频慕课网APP

相关分类

Java
我要回答