运行程序后可以输入4个选项,分别为:fib,sort,search,getBirthDate fib:根据输入n,打印斐波那契数列。比如输入:3,输出:1 1 2 sort:输入一串数字,然后进行排序并输出,注意数组元素输出的格式为使用[ ]包括。提示:可直接使用函数Arrays相关方法处理输出。 search:如果找到返回所找到的位置,如果没找到,返回-1。提示: 可以先对数组排序,然后使用Arrays相关函数进行查找。 getBirthDate:输入n个身份证,然后把输入的n个身份号的年月日抽取出来,按年-月-日格式输出。 当输入不是这几个字符串(fib,sort,search,getBirthDate)的时候,显示exit并退出程序。
时间: 2023-06-04 09:08:53 浏览: 116
recursion-algorithms:使用递归方案编写的各种算法的集合
好的,了解了,让我来试着回答你的问题。
fib: 输入n,打印斐波那契数列。
可以使用递归实现:
```java
public static int fibonacci(int n) {
if (n == 0) {
return 0;
} else if (n == 1) {
return 1;
} else {
return fibonacci(n-1) + fibonacci(n-2);
}
}
```
然后在 main 函数中调用该函数进行输出即可:
```java
int n = scanner.nextInt();
for (int i = 0; i < n; i++) {
System.out.print(fibonacci(i) + " ");
}
```
sort: 输入一串数字,进行排序并输出。
可以使用 Arrays.sort() 函数进行排序,然后使用 Arrays.toString() 函数将数组转化为字符串输出:
```java
int[] nums = {1, 5, 2, 9, 3};
Arrays.sort(nums);
System.out.println(Arrays.toString(nums));
```
search: 查找输入的数字是否在数组中。
先使用 Arrays.sort() 函数进行排序,然后使用 Arrays.binarySearch() 函数进行查找:
```java
int[] nums = {1, 5, 2, 9, 3};
Arrays.sort(nums);
int idx = Arrays.binarySearch(nums, 2);
System.out.println(idx);
```
getBirthDate: 输入n个身份证,输出出生日期。
可以使用正则表达式对身份证中的出生日期进行提取,并使用 SimpleDateFormat 格式化输出:
```java
String[] ids = {"110101190001011234", "130821198706230010"};
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
for (String id : ids) {
String birth = id.substring(6, 14);
try {
Date date = sdf.parse(birth);
System.out.println(sdf.format(date));
} catch (ParseException e) {
e.printStackTrace();
}
}
```
注意,以上代码都是示例代码,具体实现要根据要求进行修改和完善。如果有任何问题,请随时提出。
阅读全文