我的代码没有报错,但是,在执行后出现如下错误:请大神帮助!
是否继续?yes/no
Exception in thread "main" java.util.NoSuchElementException
at java.util.Scanner.throwFor(Scanner.java:907)
at java.util.Scanner.next(Scanner.java:1416)
at cn.edu.hpu.game.Game.begin(Game.java:69)
at cn.edu.hpu.game.Test.main(Test.java:11)
是否继续?yes/no
Exception in thread "main" java.util.NoSuchElementException
at java.util.Scanner.throwFor(Scanner.java:907)
at java.util.Scanner.next(Scanner.java:1416)
at cn.edu.hpu.game.Game.begin(Game.java:69)
at cn.edu.hpu.game.Test.main(Test.java:11)
这是报异常了啊……NoSuchElementException。由 Enumeration 的 nextElement 方法抛出,表明枚举中没有更多的元素。你看一下你的程序吧,这是一个RuntimeException,在编译时不会报错的、
//猜拳有三个属性:玩家姓名、电脑人姓名、游戏局数,一个方法;游戏开始
private Player p=new Player();
private Computer c=new Computer();
private int count=0;
public void begin(){
System.out.println("********欢迎来到猜拳游戏********");
System.out.println("游戏规则:1、剪刀 2、石头 3、布");
System.out.println("请输入你的姓名:");
Scanner UserInput=new Scanner(System.in);//接受用户的输入
String UserName=UserInput.next();//玩家输入名字
p.setName(UserName);//设置玩家的名字
//选择对手
System.out.print("请选择你的对手:1、刘备 2、孙权 3、曹操:");
int UserSelect=UserInput.nextInt();
switch(UserSelect){
case 1:
c.setName("刘备");
break;
case 2:
c.setName("孙权");
break;
case 3:
c.setName("曹操");
break;
}
System.out.println("开始游戏吗?yes/no");
String isBegin=UserInput.next();
if(isBegin.equals("yes")){
System.out.println("游戏开始.....");
System.out.println(p.getName()+"VS"+c.getName());
//定义是否继续游戏的控制
String isContiune=null;
do{
//存放出拳
int pFist=p.Fist();
int cFist=c.Fist();
//判断胜负
if((pFist==1 && cFist==3)||
(pFist==2 && cFist==1)||
(pFist==3 && cFist==2))
{
System.out.println("本局"+p.getName()+"胜!");
p.setScore(p.getScore()+1);
}
else if((pFist==1 && cFist==1)||
(pFist==2 && cFist==2)||
(pFist==3 && cFist==3))
{
System.out.println("本局平!!!!");
}
else
{
System.out.println("本局"+c.getName()+"胜!");
c.setScore(c.getScore()+1);
}
//提示玩家是否继续
System.out.println("是否继续?yes/no");
isContiune=UserInput.next();
count++;
}while(isContiune.equals("yes"));
}
UserInput.close();
}
public void showReslut()
{
int duce=count-p.getScore()-c.getScore();
System.out.println("**********游戏结束,统计结果如下***********");
System.out.printf("**********"+p.getName()+ " VS "+c.getName()+"*******");
//判断最终的胜利
if(p.getScore()>c.getScore())
{
System.out.println(p.getName()+"取得最终的胜利!!");
}
else if(p.getScore()==c.getScore())
{
System.out.println("这是一个平局,两位下次在一决高下!!!!");
}
else
{
System.out.println(c.getName()+"取得最终的胜利!!");
}
System.out.println("总局数:"+count);
System.out.println(p.getName()+"胜的局数为:"+p.getScore());
System.out.println(c.getName()+"胜的局数为:"+c.getScore());
System.out.println("平局数:"+duce);
} public int getCount() {
return count;
} public void setCount(int count) {
this.count = count;
}
}
int UserSelect=UserInput.nextInt();
这里输入的话是否应该用string 类型 然后在转成 int?
int int UserSelect=Integer.parseInt(UserInput.next());相同!