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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© China_Riven 中级黑马   /  2015-7-23 21:12  /  270 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

package com.itheima;

public class Test9
{

    /**
     * 9、 在一个类中编写一个方法,这个方法搜索一个字符数组中是否存在某个字符,
     * 如果存在,则返回这个字符在字符数组中第一次出现的位置(序号从0开始计算),
     * 否则,返回-1。要搜索的字符数组和字符都以参数形式传递传递给该方法,
     * 如果传入的数组为null,应抛出IllegalArgumentException异常。
     * 在类的main方法中以各种可能出现的情况测试验证该方法编写得是否正确,
     * 例如,字符不存在,字符存在,传入的数组为null等。
     *
     * 思路:1.当数组为null的时候,创建异常对象,并将这个异常打印到控制台
     * 2.当数组有值的时候,且能匹配到给定字符的情况,就遍历数组中的元素与给定的字符依次比较,
     * 获得匹配时的索引.
     * 3.当字符数组与给定的字符一一匹配都没有成功,那么就说明该字符不在字符数组里.只要满足
     * 遍历过程中数组的最后一个元素与我们给定的字符不相同就可以了.
     */
    public static void main(String[] args)
    {
        Test9 test9 = new Test9();
        // 字符数组中匹配不到给定的字符
        char c = 'c';
        char[] ch = { 'z', 'w', 'w' };
        test9.method(c, ch);
        System.out.println("==========");
        // 字符数组总匹配到给定的字符
        char c1 = 'c';
        char[] ch1 = { 'z', 'c', 'w' };
        test9.method(c1, ch1);
        System.out.println("==========");
        // 字符数组为空
        char c2 = 'c';
        char[] ch2 = null;
        test9.method(c2, ch2);
    }

    // 定义一个方法来满足题目的需求,用可变参数定义数组,正好应对不确定传入数组的长度情况
    public void method(char c, char... ch)
    { // 当传入的数组为null
        if (ch == null)
        { // 创建异常对象
            IllegalArgumentException exception = new IllegalArgumentException();
            // 将异常打印到控制台
            exception.printStackTrace();
        }

        else
        {
            // 遍历数组
            for (int i = 0; i < ch.length; i++)
            { // 当在字符数组中匹配到字符时
                if (c == ch[i])
                {
                    System.out.println("字符存在,位置为:" + i);
                    break;
                }
                // i+1==ch.length表示整个数组遍历完成,都没有匹配到需要的字符.
                else if (i + 1 == ch.length)
                {
                    System.out.println("字符不存在");
                }

            }

        }

    }

}

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马