7-2 jmu-Java-02基本语法-01-综合小测验

运行程序后可以输入4个选项,分别为:fib,sort,search,getBirthDate

fib:根据输入n,打印斐波那契数列。比如输入:3,输出:1 1 2

sort:输入一串数字,然后进行排序并输出,注意数组元素输出的格式为使用[ ]包括。提示:可直接使用函数Arrays相关方法处理输出。

search:如果找到返回所找到的位置,如果没找到,返回-1。提示: 可以先对数组排序,然后使用Arrays相关函数进行查找。

getBirthDate:输入n个身份证,然后把输入的n个身份号的年月日抽取出来,按年-月-日格式输出。

当输入不是这几个字符串(fib,sort,search,getBirthDate)的时候,显示exit并退出程序。

注意: 在处理输入的时候,尽量只使用Scanner的nextLine()方法接收输入,不要将nextLine()与其它next方法混用,否则可能会出现行尾回车换行未处理影响下次输入的情况。

参考:jdk文档的Arrays,String

输入格式:

fib
3
sort
-1 10 3 2 5
search
-1
search
0
getBirthDate
1
330226196605054190
e

 输出格式:

1 1 2
[-1, 2, 3, 5, 10]
0
-1
1966-05-05
exit

import java.util.Arrays;
import java.util.Scanner;

public class Main {
    //全局的数组
    static int[] nums;
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while(sc.hasNextLine())
        {
            String choice = sc.nextLine();
            //System.out.println("##"+choice+"##");
            switch (choice) {
            case "fib":
                fib(sc);
                break;
            case "sort":
                nums = sort(sc);
                break;
            case "search":
                search(sc,nums);
                break;
            case "getBirthDate":
                getBirthDate(sc);
                break;
            default:
                System.out.println("exit");
                System.exit(0);
                break;
            }
        }
        sc.close();
    }
    
    private static void getBirthDate(Scanner sc) {
        String nstr = sc.nextLine();
        int n = Integer.parseInt(nstr);
        for (int i = 0; i < n; i++) {
            String id = sc.nextLine();
            System.out.println(id.substring(6, 10)+"-"+id.substring(10, 12)+"-"+id.substring(12, 14));
        }
    }
    private static void search(Scanner sc,int[] nums) {
        //System.out.println(Arrays.toString(nums));
        String numbstr = sc.nextLine();
        int numb = Integer.parseInt(numbstr);
        int index = Arrays.binarySearch(nums, numb);
        //System.out.println("##"+index+"##");
        if(index >= 0)
        {
            System.out.println(index);
        }
        else
        {
            System.out.println("-1");
        }
    }
    private static int[] sort(Scanner sc) {
        String line = sc.nextLine();
        //String[] numbers = line.split(" ");
        String[] numbers = line.split("\\s+");//正则表达式
        int[] nums = new int [numbers.length];
        for(int i = 0;i < nums.length;i++) {
            nums[i] = Integer.parseInt(numbers[i]);
        }
        Arrays.sort(nums);//数组类方法。
        System.out.println(Arrays.toString(nums));
        //最后要返回生成好的数组。
        return nums;
    }
    private static void fib(Scanner sc) {
        String nstr = sc.nextLine();
        int n = Integer.parseInt(nstr);
        int first_numb = 1;
        int second_numb = 1;
        for(int i = 1;i <= n;i++)
        {
            if(i == 1) {
                System.out.print(first_numb);
            }
            else if(i == 2) {
                System.out.print(" "+ second_numb);
            }
            else if(i >= 3){
                int temp = first_numb + second_numb;
                first_numb = second_numb;
                second_numb = temp;
                System.out.print(" "+ temp);
            }
        }
        System.out.println();
    }
}
 

  • 11
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值