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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 田策 中级黑马   /  2015-10-16 13:28  /  466 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

/*
需求:
        定义一个int数组,键盘录入数组长度,和每一个元素数据。
        录入完毕后,打印数组;
        打印完毕后,键盘输入需要查找的数据,返回查找数据在数组中的索引值。

思路:
        A:创建键盘输入对象,
        B:录入数组长度
        C:根据录入的长度,创建一个int数组arr
        D:定义一个为数组元素赋值的方法 void int(int[] arr) {...}
                a: 创建键盘输入对象
                b:for循环遍历数组,挨个为每一个元素赋值
        E:定义一个打印数组的方法 void print(int[] arr) {...}
                a:在一行打印出数组,格式[11, 22, 33...]
        F:提示用户输入需要查找的数据
        G:定义变量,接收键盘录入数据
        H:定义一个从数组中查找元素第一次出现索引位置的方法 int getIndex(int[] arr, int value) {...}
                a: 遍历数组
                b:value挨个和arr[i]做比较,是否相等,
                        * 相等,返回索引i,结束循环
                c:若都不相等,返回-1。
        I:根据getIndex(..)的返回值,输出对应的结果。
*/

import java.util.Scanner;
class Day05_ArrayTest {
        public static void main(String[] args) {
                Scanner sc = new Scanner(System.in);
                int[] arr;    //先声明一个数组,暂时不初始化,等待键盘录入长度,再初始化。

                //根据键盘录入的长度,new一个数组。
                System.out.print("请定义数组长度:");
                while (true) {
                        int length = sc.nextInt();
                        if (length > 0) {
                                arr = new int[length];
                                break;
                        } else {
                                System.out.print("您的输入不合法,请重新输入数组长度:");
                        }
                }
               
                //调用为数组赋值的方法
                init(arr);

                //调用打印数组的方法
                print(arr);

                //while true, 让用户可以多次输入并查找数据
                while (true) {
                        System.out.print("请输入您要查找的数据:");
                        int value = sc.nextInt();

                        //拜拜了,若不想再继续查找,自定义跳出循环的标记。
                        if (value == 886) {       
                                System.out.println("谢谢您的使用,欢迎下次再来 :)");
                                System.out.println();
                                break;
                        }

                        //调用查找元素索引的方法
                        int index = getIndex(arr, value);
                        if (index == -1) {
                                System.out.println(":( 对不起! 没有你要查找的数据 :(");
                        } else {
                                System.out.println(value + "在数组中第一次出现的索引是: " + index);
                        }
                        System.out.println();
                }
        }


        //为数组赋值
        public static void init(int[] arr) {
                System.out.println("-----------------------");
                Scanner sc = new Scanner(System.in);
                for (int i = 0; i < arr.length; i++) {
                        System.out.print("请录入数组的第" + (i+1) + "个元素: ");
                        arr[i] = sc.nextInt();                        //从键盘录入为每一个数组元素赋初值
                }
                System.out.println("-----------------------");
        }


        //打印数组
        public static void print(int[] arr) {
                System.out.print("您录入的数组信息为:[");
                for (int i = 0; i < arr.length; i++) {
                        if (i == arr.length - 1) {
                                System.out.println(arr[i] + "]");
                        } else {
                                System.out.print(arr[i] + ", ");
                        }
                }
                System.out.println("-------------------------");
        }


        //从数组中查找value
        public static int getIndex(int[] arr, int value) {
                for (int i = 0; i < arr.length; i++) {
                        if (arr[i] == value) {
                                return i;
                        }
                }
                return -1;                //因为方法有具体返回值类型,必须有return语句,如果没找到,返回-1
        }
}

1 个回复

倒序浏览
。。。。。。。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马