黑马程序员技术交流社区

标题: 在一个类中编写一个方法,这个方法搜索一个字符数组中... [打印本页]

作者: China_Riven    时间: 2015-7-21 22:29
标题: 在一个类中编写一个方法,这个方法搜索一个字符数组中...
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("字符不存在");
                }

            }

        }

    }

}







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