java的try catch 问题,为什么try不能加到while(true)的前面

import java.util.*;
import java.io.*;
public class admin {
public static void main(String[] args) throws Exception
{
Spgl shipin=new Spgl();
BufferedReader sr=new BufferedReader(new InputStreamReader(System.in));

while(true)
{
try{ //为什么try不能加到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");
String str=sr.readLine();

if(str.equals("1"))
{
System.out.println("请输入商品编号:");
String bh=sr.readLine();
System.out.println("请输入商品名称:");
String mc=sr.readLine();
System.out.println("请输入商品价格:");
float jg=Float.parseFloat(sr.readLine());

Sp sp=new Sp(bh,mc,jg);
shipin.addsp(sp);
}else if(str.equals("2")){
System.out.println("请输入商品编号:");
String bh=sr.readLine();
shipin.spxx(bh);
}else if(str.equals("3")){
System.out.println("请输入商品编号:");
String bh=sr.readLine();
System.out.println("请输入新的价格:");
float jg=Float.parseFloat(sr.readLine());
shipin.spjg(bh, jg);
}else if(str.equals("4")){

String bh=sr.readLine();
shipin.delsp(bh);
}else if(str.equals("0")){
System.out.println("感谢你的使用");
System.exit(-1);
}else
{
System.out.println("输入有误:");
}
}
catch(Exception e){
System.out.println("对不起输入有误,程序重新运行");
}
}
}

}

public class admin {
    public static void main(String[] args) throws Exception
    {
        //Spgl shipin=new Spgl();
        BufferedReader sr=new BufferedReader(new InputStreamReader(System.in));
        
        while(true)
        {
            try{                                                                           //为什么try不能加到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");
            String str=sr.readLine();
        
            if(str.equals("1"))
            {
                System.out.println("请输入商品编号:");
                    String bh=sr.readLine();
                System.out.println("请输入商品名称:");
                    String mc=sr.readLine();
                System.out.println("请输入商品价格:");
                    float jg=Float.parseFloat(sr.readLine());
                    
                    //Sp sp=new Sp(bh,mc,jg);
                    //shipin.addsp(sp);
            }else if(str.equals("2")){
                System.out.println("请输入商品编号:");
                String bh=sr.readLine();
                //shipin.spxx(bh);
            }else if(str.equals("3")){
                System.out.println("请输入商品编号:");
                String bh=sr.readLine();
                System.out.println("请输入新的价格:");
                float jg=Float.parseFloat(sr.readLine());
                //shipin.spjg(bh, jg);
            }else if(str.equals("4")){
                
                String bh=sr.readLine();
                //shipin.delsp(bh);
            }else if(str.equals("0")){
                System.out.println("感谢你的使用");
                System.exit(-1);
            }else
            {
                System.out.println("输入有误:");
            }
            }
            catch(Exception e){
                System.out.println("对不起输入有误,程序重新运行");
            }
        }
        }

}

亲测可用!

温馨提示:内容为网友见解,仅供参考
第1个回答  2017-10-28
可以的呀,我觉得你应该只是把大括号扩错了吧,你try加在while外面,catch是不是没有正确改变呀?
第2个回答  推荐于2017-10-28
可以加,try 移到 while 的上面,相对的下面的 catch 也要移到 while 循环体的外面本回答被网友采纳
第3个回答  2020-04-23
放在while(true)外面的话,出现异常 while(true)就会跳出循环了
第4个回答  2017-09-28
可以的,怎么不可以了

...catch 问题,为什么try不能加到while(true)的前面
public class admin { public static void main(String[] args) throws Exception { \/\/Spgl shipin=new Spgl(); BufferedReader sr=new BufferedReader(new InputStreamReader(System.in)); while(true) { try{ \/\/为什么try不能加到while(true)的前面 System.out.prin...

try catch在Java中遇到for循环怎么用,在for循环里面还是外面用?_百度...
外面。如果遇到异常,循环停止。如果放在循环里面,就会一直抛出异常信息,最后内存溢出。楼下说我的错误:附上代码你运行下 放在循环里面捕获:while (true){ try { throw new NullPointerException();}catch (Exception e){ e.printStackTrace();} } 程序会一直打印异常信息。放在外面捕获:try { wh...

在java语言中try-catch的catch中能否再加try--catch?
当然可以,但是不建议这么去做,你可以把你需要捕获异常的代码块放在一个try catch中,捕获你可能出现的所有异常就醒了,比如:try{ }catch(Exception1){ }catch(Exception2){ }。。。这种捕获是顺序捕获,如果觉得麻烦,就捕获所有异常!

...中的返回值(return),为什么总是写在try\/catch的后面,如果写在try...
会,不管异常怎么执行,异常会不会发生,finally总会被执行,try\/catch\/finally 执行步骤是这样的:先执行try里面的语句,如果try里面有异常,则执行catch里面的语句,接着执行finally语句。。如果try语句里没异常,则直接执行finally里面语句。。。finally语句执行完了,接着执行外面的语句啊,肯定可以执行到...

Java中的try catch的作用
try就像一个网,把try{}里面的代码所抛出的异常都网住,然后把异常交给catch{}里面的代码去处理,最后执行finally之中的代码。无论try中代码有没有异常,也无论catch是否将异常捕获到,finally中的代码都一定会被执行。例如:当除数为0时,编译不会报错,如果没有try\/catch的话,程序直接崩溃。用try\/...

java中TCP设计的,while(true)是个死循环,为什么这样可以呢?我用while...
那如果像你那样的写法就要调用2次next(),那么第一次输入的信息就会拿来做判断,判断成功,进入循环体,第二次输入才把内容输出出来..然后第三次输入的时候就被用来判断是否循环...一直这样下去 Scanner sc = new Scanner(System.in);System.out.println("enter");\/\/ while(true)\/\/{System.out....

java编程,如果输入错误怎样返回前一步
思路错了,java没有goto语句。所以需要用while实现 如 while(true){ try{ 。。。\/\/获取输入的值的代码 break; \/\/退出循环 }catch{ ...\/\/提示错误要求重新输入 } } 当输入的值不满足条件抛出异常try块最后额break;就不会运行,会继续循环要求重新输入一个值直到没有异常才会运行到Break 退出循环...

Java里try catch的简单用法
1、try+catch+finally 程序的流程是:运行到try块中,如果有异常抛出,则转到catch块,catch块执行完毕后,执行finally块的代码,再执行finally块后面的代码。如果没有异常抛出,执行完try块,也要去执行finally块的代码。然后执行finally块后面的语句 2、try+finally 程序的流程是:运行到try块中,如果有...

java中返回重新输入(java返回数据)
思路错了,java没有goto语句。所以需要用while实现如while(true){try{。。就无限制的执行循环体里的内容)然后循环体里,你给个控制台输入就好。或者用goto输入的数字如果符合规则,跳到符合规则后执行的,如果不符合,跳到执行输入前。Java用scanner实现交互,要求输入信息错误时返回重新输入1、改用...

关于try_catch异常的输出问题
这个问题很容啊。system.out是你自己的程序打印的东西。是你自己程序main线程里的。而catch里的e.printStackTrace()是jvm帮你干的。jvm里有自己一个独立的线程。两个线程根本不冲突。但cpu分配时间片是随机的,不一定分给谁的时间多,所以打印的时间没法确定,所以一会上一会下的 ...

相似回答