我写了个文字游戏:商店类老出错。
package WenziGame;import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.Vector;import WenziGame.Role;   /**主测试类
 * @param <vector>*/
public class MainTest<vector> {
//游戏状态: ——定义个 变量
/*0=游戏帮助  1=主角属性  2=商店   3=怪物*/
    static int gameState=-1;
    
//判断游戏是否继续    ——定义个 布尔值
    static boolean isRun=true;
    
    /**初始化---------------*/
    
    static Role role =null;
    
    
    
public static void main(String[] args) {
     /**赋值-------------------*/
       role = new Role(100,100,0,1,20,5,0.0);
       
               /**背包*/
      

      //游戏反复运行——死循环——while
while(isRun){
//切换游戏状态——用变量——switch
  String g= getInput();                // 变量 @  

             setGameState(g);  /**需要一个变量控制switch(也就是gameState)*/
/**需要玩家输入,所以需建一个变量 @ 控制setGameState*/

switch(gameState){
case 0:                            //显示帮助  
         showHelp();     
break;
case 1:                            //主角属性
               showZJ();    
break;
case 2:                            //道具菜单
showProp();
break;
case 3:                            //怪物列表
break;
}

}
} /*方法*/
/**按键操作,玩家输入(控制setGameState)*/
public static String getInput(){
InputStream in = System.in;
InputStreamReader ir =new InputStreamReader(in);
BufferedReader br=new BufferedReader(ir);
String s="";
try{
s=br.readLine();
}catch(IOException ie){
ie.printStackTrace();
}

return s;
}
   /**切换游戏状态*/
 public static void setGameState(String s){
for(int i=0;i<4;i++){
if(s.equals(""+i)){
gameState =i;
return;
}
}
}
   /**显示帮助*/
   static void showHelp(){
System.out.println("按0键:查看帮助文档");
System.out.println("按1键:查看主角属性");
System.out.println("按2键:查看道具信息");
System.out.println("按3键:查看怪物信息");
 }

   /**显示主角属性*/
   static void showZJ(){
   
   System.out.println("");        //武器
   System.out.println("");        //道具    
   //升级 血+3; 魔+2 伤害+2

   
   
   System.out.println("血量=    "+role.hp);
   System.out.println("魔法=    "+role.mp);    
   System.out.println("等级=    "+role.lv);
   System.out.println("伤害=    "+role.hv);
   System.out.println("防御=    "+role.ac);
   System.out.println("经验=    "+role.exp);
   System.out.println("暴击率=  "+role.crt);
}
   /**背包*/
  static void showProp(){
  Vector []ar=new Vector[10];//定义数组最大容器
      for(int i=0;i<ar.length;i++){ //对数组中的每个元素实例化
       ar[i]=new Vector();        
      }       
      Prop p1=new Prop("金创药",15);
      ar[0].addElement(p1);
      ar[0].addElement(p1);
      ar[0].addElement(p1);
      Prop p2=new Prop("万年雪霜",30);
      ar[1].addElement(p2);
      ar[1].addElement(p2);
      Prop p3=new Prop("魔法药",15);
      ar[2].addElement(p3);
      Prop p4=new Prop("天山雪莲",30);
      ar[2].addElement(p4);
      
      for(int i=0;i<ar.length;i++){
       if(ar[i].size()==0){
       continue;
       }
       
       Prop pp=(Prop) ar[i].elementAt(0);
       System.out.println("物品: "+pp.type+"  物品价钱 :"+pp.price);
       System.out.println("持有数目 :"+ar[i].size());
      }
  }
   
   

}package WenziGame;import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
 /**商店类*/public class Shangdian {
     /*金创药0,万年雪霜1;魔法药2,天山雪莲3;铜剑4,刚剑5;铜盾6,钢盾7;银戒指8,金戒指9*/
String type;    //物品类型
int price;      //价钱
public Shangdian(String type,int price) {
this.type=type; 
this.price=price;
}

    // 买东西
public static int buyProp=-1;  
public static void jinCuang(){                       
   System.out.println("金创药+  MP50");    
switch(buyProp){                      //******出错行
String s= getInput(); 
 setGameState(s);
case 0:                            //金创药0
break;
case 1:                            //万年雪霜1             
break;
case 2:                            //魔法药2
break;
case 3:                            //天山雪莲3
break;
}
}



/**按键操作,玩家输入*/     //要买几好东西
public static String getInput(){
InputStream in = System.in;
InputStreamReader ir =new InputStreamReader(in);
BufferedReader br=new BufferedReader(ir);
String s="";
try{
s=br.readLine();
}catch(IOException ie){
ie.printStackTrace();
}

return s;
}
   /**切换游戏状态*/         
 public static void setbuyProp(String s){
for(int i=0;i<10;i++){
if(s.equals(""+i)){
buyProp =i;
return ;
}
}
}




}

解决方案 »

  1.   

     switch(buyProp){                             //******出错行
            String s= getInput(); 
             setGameState(s);
            case 0:                            //金创药0
                break;
            case 1:                            //万年雪霜1                     
                break;                
            case 2:                            //魔法药2            
                break;
            case 3:                            //天山雪莲3
                break;
            }
      String s= getInput(); 
      setGameState(s);
    这两句写在switch里干什么?case前不应该有语句吧