[Java]PTA: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.Scanner;
import java.util.Arrays;
public class Main{
public static int fib(int n)
{
if(n==1||n==2)
{
return 1;
}else
{
return fib(n-1)+fib(n-2);
}
}
public static void main(String[] args)
{
Scanner sc=new Scanner(System.in);
int[] array=new int[0];
while(true)
{
String choice=sc.nextLine().trim();//除去空格
switch(choice)
{
case "fib":
int n=Integer.parseInt(sc.nextLine().trim());
StringBuilder fibResult = new StringBuilder();
for(int i=1;i<=n;i++)
{
if(i>1){
fibResult.append(" ");
}
fibResult.append(fib(i));
}
System.out.println(fibResult);
break;
case "sort":
String input=sc.nextLine().trim();
String[] strArray=input.split("\\s+");
int[] tempArray=new int[strArray.length];
for(int i=0;i<strArray.length;i++)
{
tempArray[i]=Integer.parseInt(strArray[i]);
}
array=tempArray;
Arrays.sort(array);
System.out.println(Arrays.toString(array));
break;
case "search":
int num=Integer.parseInt(sc.nextLine().trim());
if(array.length==0)
{
System.out.println(-1);
break;
}
int index=Arrays.binarySearch(array,num);
System.out.println(index>=0?index:-1);
break;
case "getBirthDate":
int a=Integer.parseInt(sc.nextLine().trim());
while(a>0){
String s=sc.nextLine();
System.out.println(s.substring(6,10)+"-"+s.substring(10,12)+"-"+s.substring(12,14));
a--;
}
break;
default:
System.out.println("exit");
sc.close();
System.exit(0);
break;
}
}
}
}

我的测试样例是对的,但是一直过不了测试点3,有人知道是哪里出了错误吗,,

学习记录:
1、trim() : Java 中 String 类的一个常用方法,核心作用是去除字符串首尾的空白字符,并返回处理后的新字符串。
语法格式:
String 处理后的字符串 = 原字符串.trim();
2、StringBuilder :因为 Java 中的 String 是不可变的,每次拼接都会创建新的字符串对象,而StringBuilder 会在原有对象上直接修改内容,不会创建大量临时对象,效率更高,尤其适合循环中拼接字符串的场景。
3、append() :StringBuilder(以及 StringBuffer)类的核心方法,作用是把指定内容拼接到对象的后面。
语法格式:
StringBuilder 对象名.append(要追加的内容);
4、Integer.parseInt(...):Integer 类的静态方法,作用是将 “字符串形式的数字” 解析为对应的 int 类型整数。
5、s.substring(开始索引, 结束索引) :是 Java 中 String 类的核心方法,作用是从原字符串 s 中截取一部分内容,返回一个新的字符串。
语法格式:
String 截取后的字符串 = 原字符串.substring(int beginIndex, int endIndex);
6、类里面定义的是方法,调用时必须加括号 ;数组没有方法,只有一个唯一的属性 length(用于获取数组的元素个数),访问时直接用 数组名.length,不加括号。
更多推荐
所有评论(0)