黑马程序员技术交流社区

标题: 异常的一个程序,不知道杂错了 [打印本页]

作者: 廉伟杰    时间: 2014-2-5 17:40
标题: 异常的一个程序,不知道杂错了
本帖最后由 廉伟杰 于 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是不知道为啥显示可以被使用
作者: ↑↓ME→←    时间: 2014-2-5 17:52
感觉你这个程序这样写比较对
  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. }
复制代码




作者: 周昭民    时间: 2014-2-5 18:40
楼主,不止是第二个Lucy有问题,包括后面的Jim,SpringBrother都是有问题的,因为你这个程序的for循环导致的,假设你要判断的是Lucy,在if(n.equals(name)这里判断的时候,把遍历的第一个数组元素拿出来,就是让Will和Lucy判断,结果为false,所以执行else的语句!
而你写的else这段代码输出了Lucy可以被使用,并break了!明白了吗

作者: 周昭民    时间: 2014-2-5 18:45
  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. }
复制代码



这样改动就行了,另外楼主。你的题是练习题来着吗?能不能共享一套练习题给我做做,求一份基础练习题
作者: 廉伟杰    时间: 2014-2-6 13:55
周昭民 发表于 2014-2-5 18:40
楼主,不止是第二个Lucy有问题,包括后面的Jim,SpringBrother都是有问题的,因为你这个程序的for循环导致 ...

知道咋回事了的,谢了




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