A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 廉伟杰 中级黑马   /  2014-2-5 17:40  /  1180 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 廉伟杰 于 2014-2-7 19:50 编辑
  1. public class ThrowExceptionDemo {

  2.         public static  void reg(String name) {
  3.                 //表示已经注册过的名字
  4.                 String[] names = {"Will","Lucy","Jim","SpringBrother"};
  5.                
  6.                 for (String n : names) {
  7.                         if(n.equals(name)){
  8.                                 
  9.                                 throw  new RuntimeException(name + "被使用了");
  10.                                 
  11.                         }else{
  12.                                 System.out.println(name +"可以使用");
  13.                                 break;
  14.                         }
  15.                 }
  16.                
  17.         }
  18.         
  19.         public static void main(String[] args) {
  20.                 try {
  21.                         reg("Lucy");
  22.                 } catch (Exception e) {
  23.                         String msg = e.getMessage();
  24.                         System.out.println(msg);
  25.                 }
  26.         }
  27. }
复制代码

当时Will是答案是被使用,但是当是Lucy是不知道为啥显示可以被使用

4 个回复

正序浏览
周昭民 发表于 2014-2-5 18:40
楼主,不止是第二个Lucy有问题,包括后面的Jim,SpringBrother都是有问题的,因为你这个程序的for循环导致 ...

知道咋回事了的,谢了
回复 使用道具 举报
  1. public class Test{

  2.         public static  void reg(String name) {
  3.                 //表示已经注册过的名字
  4.                 String[] names = {"Will","Lucy","Jim","SpringBrother"};
  5.                
  6.                 for (String n : names) {
  7.                         if(n.equals(name)){
  8.                                 
  9.                                 throw  new RuntimeException(name + "被使用了");
  10.                                 
  11.                         }
  12.                                 
  13.                                 
  14.                 }      
  15.                                        
  16.                                  System.out.println(name +"可以使用");
  17.                
  18.         }
  19.         
  20.         public static void main(String[] args) {
  21.                
  22.                         reg("Lucy");
  23.                
  24.         }
  25. }
复制代码



这样改动就行了,另外楼主。你的题是练习题来着吗?能不能共享一套练习题给我做做,求一份基础练习题
回复 使用道具 举报
楼主,不止是第二个Lucy有问题,包括后面的Jim,SpringBrother都是有问题的,因为你这个程序的for循环导致的,假设你要判断的是Lucy,在if(n.equals(name)这里判断的时候,把遍历的第一个数组元素拿出来,就是让Will和Lucy判断,结果为false,所以执行else的语句!
而你写的else这段代码输出了Lucy可以被使用,并break了!明白了吗
回复 使用道具 举报
感觉你这个程序这样写比较对
  1. public class ThrowExceptionDemo {

  2.         public static  void reg(String name) {
  3.                 //表示已经注册过的名字
  4.                 String[] names = {"Will","Lucy","Jim","SpringBrother"};
  5.                
  6.                 for (String n : names) {
  7.                         if(n.equals(name)){
  8.                                 
  9.                             throw  new RuntimeException(name + "被使用了");
  10.                                 
  11.                         }
  12.                 }
  13.                 throw new RuntimeException(name+"可以使用了");
  14.         }
  15.         
  16.         public static void main(String[] args) {
  17.                 try {
  18.                         reg("sss");
  19.                 } catch (Exception e) {
  20.                         String msg = e.getMessage();
  21.                         System.out.println(msg);
  22.                 }
  23.         }
  24. }
复制代码



回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马