黑马程序员技术交流社区

标题: 关于异常的处理,求大神帮忙 [打印本页]

作者: 人生无处不阳光    时间: 2013-12-5 11:54
标题: 关于异常的处理,求大神帮忙
本帖最后由 人生无处不阳光 于 2013-12-5 20:30 编辑

下面是我的代码,关于switch 只能输入整数 , 不能输入字符的问题,我给switch加了个 try catch,外层是个while死循环,可是如果进入了catch里就一直循环  不会停下来   怎么办?  主要看main方法下的代码就行,知道的告诉我一下   谢谢了

import java.util.*;


public class Student {
        public static void main(String[] args) {
                Scanner x=new Scanner(System.in);
               
                spgl gl=new spgl();
                while(true){
                        System.out.println("请按提示选择以下功能:");
                        System.out.println("添加食品请按1");
                        System.out.println("查找食品信息请按2");
                        System.out.println("修改食品价格请按3");
                        System.out.println("删除食品信息请按4");
                        System.out.println("退出请按0");
                        try{
                                int shuru=x.nextInt();
                                switch(shuru){
                                case 1:
                                        System.out.println("请输入编号:");
                                        String on=x.next();
                                        System.out.println("请输入名称:");
                                        String name=x.next();
                                        System.out.println("请输入价格:");
                                        float money=x.nextFloat();
                                        Sp sp=new Sp(on,name,money);
                                        gl.sptj(sp);
                                }
        }catch( InputMismatchException in){
                                System.out.println("请输入正确编号!");
                                
                        }
                }
        }

}
class spgl{
        private ArrayList<Sp> aa=null;
        spgl(){
                aa=new ArrayList<Sp> ();
        }
        public void sptj(Sp sp){
                aa.add(sp);
                System.out.println("商品添加成功");
        }
        public void spcz(String on){

                int i;
                for (i = 0; i < aa.size(); i++) {
                        Sp sp=aa.get(i);
                        if(on.equals(sp.getOn())){
                                System.out.println("此商品信息为:");
                                System.out.println("编号:"+sp.getOn());
                                System.out.println("名称:"+sp.getName());
                                System.out.println("金额:"+sp.getMoney());
                        }
                }
                if(i==aa.size())
                        System.out.println("没有此商品");
        }
        public void spxg(String on,float money){


                int i;
                for (i = 0; i < aa.size(); i++) {
                        Sp sp=aa.get(i);
                        if(on.equals(sp.getOn())){
                                sp.setMoney(money);
                                System.out.println("价格修改成功");
                                System.out.println(aa.get(i));
                        }
                }
                if((i==aa.size()))
                        System.out.println("没有找到此商品");
        }
        public void spsc(String on){
                if(aa.size()==0){
                        System.out.println("您的仓库已经没有商品");

                }
                int i;
                for (i = 0; i < aa.size(); i++) {
                        Sp sp=aa.get(i);
                        if(sp.getOn().equals(on)){
                                aa.remove(i);
                                System.out.println("删除成功");
                                break;
                        }
                }
                if((i==aa.size())&&(i!=0))
                        System.out.println("没有找到此商品");
        }
}
class Sp{
        String on;
        public String getOn() {
                return on;
        }
        public void setOn(String on) {
                this.on = on;
        }
        public String getName() {
                return name;
        }
        public void setName(String name) {
                this.name = name;
        }
        public float getMoney() {
                return money;
        }
        public void setMoney(float money) {
                this.money = money;
        }
        String name;
        float money;
        Sp(String on,String name,float money){
                this.on=on;
                this.name=name;
                this.money=money;

        }
}
作者: Jim-剣◆﹏    时间: 2013-12-5 13:40
很简单,你只要把 Scanner x=new Scanner(System.in);这句放入try里面就可以了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2