运行程序后可以输入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.ArrayList;
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int[] arr = new int[10];
while (true) {
String choice = sc.nextLine();
switch (choice) {
case "fib":
ArrayList<Integer> list = new ArrayList<>();
list.add(1);
list.add(1);
int n = Integer.parseInt(sc.nextLine().trim());
for (int i = 2; i < n; i++) {
list.add(list.get(i - 1) + list.get(i - 2));
}
for (int i = 0; i < n - 1; i++) {
System.out.print(list.get(i) + " ");
}
System.out.println(list.get(n - 1));
break;
case "sort":
String[] line = sc.nextLine().split(" ");
arr=getArr(line);
Arrays.sort(arr);
System.out.println(Arrays.toString(arr));
break;
case "search":
Arrays.sort(arr);
int x = Integer.parseInt(sc.nextLine().trim());
int index=Arrays.binarySearch(arr, x);
if(index>=0) System.out.println(index);
else System.out.println(-1);
break;
case "getBirthDate":
int num = Integer.parseInt(sc.nextLine().trim());
String[] id = new String[num];
for (int i = 0; i < num; i++) {
id[i] = sc.nextLine();
System.out.println(id[i].substring(6, 10) + "-"
+ id[i].substring(10, 12) + "-"
+ id[i].substring(12, 14));
}
break;
default:
System.out.println("exit");
System.exit(0);
}
}
}
public static int[] getArr(String[] line){
int[] arr=new int[line.length];
for (int i = 0; i < line.length; i++) {
arr[i] = Integer.parseInt(line[i].trim());
}
return arr;
}
}