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类型数据进行运算,无法得到精确值

posted @ 2021-08-29 14:49  稶郗  阅读(65)  评论(0编辑  收藏  举报