Java第02次实验提纲(Java基本语法与类库)
PTA
基本语法-01-综合小测验
代码:
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.hasNext())
{
String choice=sc.nextLine();
switch(choice)
{
case"sort":
sort(sc);//分类
break;
case"fib":
fib(sc);//打印
break;
case"search":
search(sc);//查找
break;
case"getBirthDate":
getBirthDate(sc);//取数字
break;
default:
System.out.println("exit");
break;
}
}
sc.close();
}
private static void getBirthDate(Scanner sc) {
int num=Integer.parseInt(sc.nextLine());
for(int i=0;i<num;i++)
{
String bir=sc.nextLine();
System.out.println(bir.substring(6,10)+"-"+bir.substring(10,12)+"-"+bir.substring(12,14));//substring取特定位置
}
}
private static void search(Scanner sc) {
int flag=0;
int num=Integer.parseInt(sc.nextLine());
for(int i=0;i<nums.length;i++)
{
if(nums[i]==num)
{
System.out.println(i);
flag=1;//找到
break;
}
}
if(flag==0)
{
System.out.println("-1");
}
}
private static void sort(Scanner sc) {
String line=sc.nextLine();
String[] numStrs=line.split(" ");//新内容!!!!!
nums=new int[numStrs.length];
for(int i=0;i<numStrs.length;i++)
{
nums[i]=Integer.parseInt(numStrs[i]);
}
Arrays.sort(nums);//自动排序
System.out.println(Arrays.toString(nums));//输出
}
private static void fib(Scanner sc) {
int num=Integer.parseInt(sc.nextLine());//parseInt转数字
if(num==1)
{
System.out.println("1");
}
else if(num==2)
{
System.out.println("1 1");
}
else if(num>2)
{
int num1=1;
int num2=1;
System.out.print("1 1");
for(int i=3;i<=num;i++)//数列解法
{
int tmp=num1+num2;
System.out.print(" "+tmp);
num1=num2;
num2=tmp;
}
System.out.println();
}
}
}
switch Alt+/:
switch (key) {
case value:
break;
default:
break;
}
for Alt+/:
for (int i = 0; i < args.length; i++) {
}
while Alt+/:
while (condition) {
}
main Alt+/:
public static void main(String[] args) {
}
快速创建程序框架:
输入sort(sc),后会自动出现波浪线,点击后产生选项后自动生成
身份证排序
代码:
import java.util.Scanner;
import java.util.Arrays;
public class Main
{
public static void main(String args[])
{
Scanner sc=new Scanner(System.in);
int num=sc.nextInt();//读取一个标志转为数字
String[] str=new String[num];
for(int i=0;i<num;i++)
{
str[i]=sc.next();
}
String[] data=new String[num];
for(int i=0;i<num;i++)
{
data[i]=str[i].substring(6, 15);//取年月日
}
Arrays.sort(data);//自动排序
while(true)
{
String a=sc.next();
switch(a)
{
case"sort1":
for(int i=0;i<num;i++)
{
System.out.println(data[i].substring(0, 4)+"-"+data[i].substring(4, 6)+"-"+data[i].substring(6, 8));
}
break;
case"sort2":
int[] number=new int[num];
int g=0;
for(int i=0;i<num;i++)
{
for(int j=0;j<num;j++)
{
String b=str[j].substring(6, 15);
if(b.equals(data[i]))
{
number[g]=j;
g++;
}
}
}
for(int i=0;i<num;i++)
{
System.out.println(str[number[i]]);
}
break;
default:
System.out.println("exit");
break;
}
}
}
}
Arrays.sort:自动对数组内容进行排序
subString:格式:字符串.subString(字符开始的下标,开始的下标+要取得个数),自动获取特定位置的字符串
StringBuilder
代码:
import java.util.Scanner;
public class Main
{
public static void main(String[] args)
{
Scanner sc=new Scanner(System.in);
while(sc.hasNext())
{
int n=sc.nextInt();
int begin=sc.nextInt();
int end =sc.nextInt();
StringBuilder str = new StringBuilder();
for (int i = 0; i < n; i++)
{
str.append(i);
}
System.out.println(str.substring(begin,end));
}
}
}
由于string的不变性,过多次调用将会产生许多无效字符串,此处用StringBuilder可避免上述情况的发生,添加时使用append。
ArrayList入门
代码:
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
import java.util.Scanner;
public class Main
{
public static void main(String[] args)
{
ArrayList<String> strList=new ArrayList<>();//新建ArrayList strList
Scanner sc=new Scanner(System.in);
while(sc.hasNext())
{
String a=sc.next();
if("!!end!!".equals(a))
{
break;
}
else
{
strList.add(a);//ArrayList添加用add
}
}
strList.add(0, "begin");//第一个位置插入
strList.add("end");
System.out.println(strList);
String str=sc.next();
System.out.println(strList.contains(str));//判断是否包含str
System.out.println(strList.indexOf(str));//从前判断
System.out.println(strList.lastIndexOf(str));//从后判断
String s=strList.get(0);//获取特定位置
strList.remove(0);//移除特定位置
System.out.println(s);
System.out.println(strList);
str=sc.next();
strList.set(1, str);
System.out.println(strList);
str=sc.next();
ArrayList<String> strList1 = new ArrayList<>();
for(int i=0;i<strList.size();i++)
{
if(strList.get(i).contains(str))
strList1.add(strList.get(i));
}
System.out.println(strList1);
strList.remove(str);
System.out.println(strList);
strList.clear();
System.out.println(strList+","+strList.size()+","+strList.isEmpty());
}
}
ArrayList相关用法:
ArrayList<类型> 名字(List)=new ArrayList<>();
List.add(e);//添加元素e
List.remove(i);//移除下标为i的元素
List.set(i,e);//在下标i的位置插入元素
List.get(i)l//获取下标为i的元素
List.contains(e);//判断是否含有e,有则返回true,没有则返回flase
List.clear();//清空
List.size();//List元素数量
浮点数的精确运算
代码:
import java.math.BigDecimal;
import java.util.Scanner;
public class Main
{
public static void main(String args[])
{
Scanner reader=new Scanner(System.in);
while(reader.hasNext())
{
String a=reader.next();
String b=reader.next();
BigDecimal a1=new BigDecimal(a);
BigDecimal b1=new BigDecimal(b);
System.out.println(b1.add(a1));//a+b
System.out.println(b1.multiply(a1));//a*b
}
}
}
直接使用double类型数据进行运算,无法得到精确值