| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 681 人关注过本帖
标题:java 问题求解释
只看楼主 加入收藏
博望、小五
Rank: 2
等 级:论坛游民
帖 子:24
专家分:16
注 册:2012-12-3
结帖率:40%
收藏
已结贴  问题点数:20 回复次数:10 
java 问题求解释
  中午写了一段代码,题目要求是比较两个字符串,假如字符串为空对象,产生异常。
代码:public class Compare {
    private String string_1;
    private String string_2;
    Compare(String string_1,String string_2){
        this.string_1=string_1;
        this.string_2=string_2;
    }
    void test(){   //两个字符串比较,如有空字符触发异常
        try{
            if(string_1.equals(string_2)){
                System.out.println("string is equal.");
            }
            else {
                    System.out.println("string isn't equal.");
                }
        }
        catch(NullPointerException e){
            System.out.println("Please input two strings.");
        }
        
   }
public static void main(String[] args) throws IOException {
        // TODO Auto-generated method stub
        BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
        System.out.println("Please input two strings:\n");
        String string_1=br.readLine();
        String string_2=br.readLine();
        string_1=string_1.trim();
        string_2=string_2.trim();
        Compare compare=new Compare(string_1,string_2);
        compare.test();

    }

}
求大神指教错在哪了。。。
搜索更多相关主题的帖子: 异常 java private public 字符串 
2012-12-03 13:20
shellingford
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:19
帖 子:228
专家分:1348
注 册:2010-8-9
收藏
得分:6 
NullPointerException 是空指针异常,不是空字符串

空字符串对比
String str="";
if("".equals(str)){
    //str为空字符串
}

[ 本帖最后由 shellingford 于 2012-12-3 17:10 编辑 ]
2012-12-03 17:08
hhwz
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:87
帖 子:687
专家分:4502
注 册:2011-5-22
收藏
得分:2 
如果不输入则为NULL NULL值 如何比较呢!!!!!
2012-12-03 17:25
博望、小五
Rank: 2
等 级:论坛游民
帖 子:24
专家分:16
注 册:2012-12-3
收藏
得分:0 
回复 2楼 shellingford
亲,题目就是比较两个字符串,如果一个字符串为空对象,产生一个NullPointerException异常,适当时候触发异常。
2012-12-03 23:31
烧包谷
Rank: 2
等 级:论坛游民
威 望:2
帖 子:60
专家分:69
注 册:2010-10-11
收藏
得分:1 
回复 3楼 hhwz
不输入不是NULL,是"",代表空字符,不是未指定到对象。
2012-12-04 07:49
烧包谷
Rank: 2
等 级:论坛游民
威 望:2
帖 子:60
专家分:69
注 册:2010-10-11
收藏
得分:3 
回复 4楼 博望、小五
亲,二楼的话你没有理解呀,人家说的很好了。你不输入直接回车,从控制台读入的是空字符串"",所以string_1="";其实这些东西,你可以写两句代码,验证一下,或者使用Debug调试。
2012-12-04 07:51
博望、小五
Rank: 2
等 级:论坛游民
帖 子:24
专家分:16
注 册:2012-12-3
收藏
得分:0 
回复 6楼 烧包谷
亲,不输入直接回车我试过了,是能比较,但是不能触发异常。
2012-12-04 13:09
shellingford
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:19
帖 子:228
专家分:1348
注 册:2010-8-9
收藏
得分:3 
回复 7楼 博望、小五
永远不会捕捉到空指针异常的
第一,你直接回车得到的是空字符串而不是空
第二
String string_1=br.readLine();
        String string_2=br.readLine();
        string_1=string_1.trim();
        string_2=string_2.trim();
        Compare compare=new Compare(string_1,string_2);

触发空指针异常的条件是string_1和string_2其中一个为NULL,如果这个条件成立了,下面2句话会报错
string_1=string_1.trim();
string_2=string_2.trim();
也不可能运行到你的try catch代码中

2012-12-04 13:15
shellingford
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:19
帖 子:228
专家分:1348
注 册:2010-8-9
收藏
得分:5 
当然 如果你非要产生空指针异常那就这样改
程序代码:
public class Compare {
    private String string_1;
    private String string_2;
    Compare(String string_1,String string_2){
        if(!"".equals(string_1)){
            this.string_1=string_1;
        }
        if(!"".equals(string_2)){
            this.string_2=string_2;
        }
    }
    void test(){   //两个字符串比较,如有空字符触发异常
        try{
            if(string_1.equals(string_2)){
                System.out.println("string is equal.");
            }
            else {
                    System.out.println("string isn't equal.");
                }
        }
        catch(NullPointerException e){
            System.out.println("Please input two strings.");
        }
       
   }
public static void main(String[] args) throws IOException {
        // TODO Auto-generated method stub
        BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
        System.out.println("Please input two strings:\n");
        String string_1=br.readLine();
        String string_2=br.readLine();
        string_1=string_1.trim();
        string_2=string_2.trim();
        Compare compare=new Compare(string_1,string_2);
        compare.test();

    }

}

2012-12-04 13:19
博望、小五
Rank: 2
等 级:论坛游民
帖 子:24
专家分:16
注 册:2012-12-3
收藏
得分:0 
回复 9楼 shellingford
谢谢,知道了。
2012-12-04 20:23
快速回复:java 问题求解释
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.013120 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved