| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2343 人关注过本帖
标题:设计一个Stringl类
只看楼主 加入收藏
wangshenya
Rank: 2
等 级:论坛游民
帖 子:5
专家分:15
注 册:2017-12-8
收藏
 问题点数:0 回复次数:4 
设计一个Stringl类
设计一个String类,要求该类不可被继承,可以存放字符串(多个字符),不可修改存放的字符。重载构造器,可以用字符数组来实例化一个String类的对象。该类需要具备以下功能,查询字符串长度,和某个字符串比较是否相等,查找某个字符是否包含在字符串中,将字符串转换为字符数组,并返回。
并编写一个测试类,对String类的功能进行测试。

提示知识点:final关键字、数组用法、重载(构造方法和普通方法),访问修饰符,字符串常量
搜索更多相关主题的帖子: 设计 String 字符 字符串 数组 
2017-12-08 15:15
王小艺
Rank: 2
等 级:论坛游民
帖 子:9
专家分:13
注 册:2017-12-12
收藏
得分:0 
回复 楼主 wangshenya
你们真的很无聊 把作业发上来
2017-12-18 16:54
wangshenya
Rank: 2
等 级:论坛游民
帖 子:5
专家分:15
注 册:2017-12-8
收藏
得分:0 
回复 2楼 王小艺
关你鸡巴 吊事,又他妈的没叫你回答,傻逼玩意。
2017-12-22 09:42
神vLinux飘飘
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:浙江杭州
等 级:贵宾
威 望:91
帖 子:6140
专家分:217
注 册:2004-7-17
收藏
得分:0 
程序代码:
public final class FuckString {

    private final char[] data;

    /**
     * 构造一个字符串
     *
     * @param data 字符数组
     */
    public FuckString(final char... data) {
        this.data = null == data
                ? new char[0]
                : data.clone();
    }

    /**
     * 获取字符串长度
     *
     * @return 字符串长度
     */
    public int getLength() {
        return data.length;
    }

    // 判断两个字符数组是否相等
    private boolean isCharArrayEquals(final char[] src,
                                      final char[] dst) {
        if (src == dst) {
            return true;
        }

        if (null == src) {
            return false;
        }

        if (src.length != dst.length) {
            return false;
        }

        for (int i = 0; i < src.length; i++) {
            if (src[i] != dst[i]) {
                return false;
            }
        }

        return true;
    }

    @Override
    public boolean equals(Object obj) {
        if (null == obj) {
            return false;
        }

        if (obj instanceof FuckString) {
            return isCharArrayEquals(data, ((FuckString) obj).data);
        } else if (obj instanceof String) {
            return isCharArrayEquals(data, ((String) obj).toCharArray());
        } else {
            return false;
        }

    }

    /**
     * 转换为字符数组
     *
     * @return 字符数组
     */
    public char[] toCharArray() {
        return data.clone();
    }

    @Override
    public String toString() {
        return new String(data);
    }

    /**
     * 判断目标字符是否出现在当前字符串中
     *
     * @param targetChar 目标字符
     * @return TRUE:出现;FALSE:不出现
     */
    public boolean containChar(char targetChar) {
        for (final char c : data) {
            if (c == targetChar) {
                return true;
            }
        }
        return false;
    }


    // 随便写一些测试用例,覆盖上边的所有场景
    public static void main(String... args) {

        assertTrue(new FuckString(new char[]{'F', 'U', 'C', 'K', ' ', 'Y', 'O', 'U'}).getLength() == 8);
        assertTrue(new FuckString(null).getLength() == 0);

        assertTrue(new FuckString('F', 'U', 'C', 'K', ' ', 'Y', 'O', 'U').equals(new String("FUCK YOU")));
        assertFalse(new FuckString('F', 'U', 'C', 'K', ' ', 'Y', 'O', 'U').equals(new String("FUCK ME")));

        assertTrue(new FuckString('F', 'U', 'C', 'K', ' ', 'Y', 'O', 'U').equals(new FuckString('F', 'U', 'C', 'K', ' ', 'Y', 'O', 'U')));
        assertFalse(new FuckString('F', 'U', 'C', 'K', ' ', 'Y', 'O', 'U').equals(new FuckString('F', 'U', 'C', 'K', ' ', 'M', 'E')));

        {
            final char[] data = {'F', 'U', 'C', 'K'};
            final FuckString fString = new FuckString(data);
            data[1] = 'S';
            assertTrue(fString.equals("FUCK"));
        }

        {
            final FuckString fString = new FuckString('F', 'U', 'C', 'K');
            final char[] data = fString.toCharArray();
            data[1] = 'S';
            assertTrue(fString.equals("FUCK"));
        }

        assertTrue(new FuckString('F', 'U', 'C', 'K').toString().equals("FUCK"));
        assertTrue(new FuckString('F', 'U', 'C', 'K').containChar('U'));
        assertFalse(new FuckString('F', 'U', 'C', 'K').containChar('X'));

    }

    // 用于测试用的简单断言
    private static void assertTrue(boolean expect) {
        if (!expect) {
            throw new IllegalStateException("assert fail!");
        }
    }

    private static void assertFalse(boolean expect) {
        assertTrue(!expect);
    }

}


嗯,这个忽悠你们老师绝对够用了~

[此贴子已经被作者于2017-12-22 19:22编辑过]


淘宝杜琨
2017-12-22 19:20
wangshenya
Rank: 2
等 级:论坛游民
帖 子:5
专家分:15
注 册:2017-12-8
收藏
得分:0 
回复 4楼 神vLinux飘飘
很6
2017-12-27 11:26
快速回复:设计一个Stringl类
数据加载中...
 
   



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

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