zoukankan      html  css  js  c++  java
  • Java第02次实验(Java基本语法与类库)

    PTA

    2.1 综合小测验

    关键代码:

    ArrayList<Integer> list = new ArrayList<>();
    		Integer num[] = null;
    		Scanner sc = new Scanner(System.in);
    		String order;
    		while (sc.hasNext()) {
    			order = sc.next();
    			switch (order) {
    			case "fib":
    				int a = sc.nextInt();
    				for (int i = 0; i < a; i++) {
    					if (i == 0 || i == 1) {
    						list.add(1);
    						continue;
    					}
    					list.add(list.get(i - 1) + list.get(i - 2));
    				}
    				for (int i = 0; i < a; i++) {
    					if(i==a-1) {
    						System.out.print(list.get(i));
    						break;
    					}
    					System.out.print(list.get(i) + " ");
    				}
    				list.clear();
                    System.out.println();
    				break;
    			case "sort":
    				while (sc.hasNextInt()) {
    					list.add(sc.nextInt());
    				}
    				num = list.toArray(new Integer[0]);
    				Arrays.sort(num);
    				System.out.println(Arrays.toString(num));
    				list.clear();
    				break;
    			case "search":
    				int search=Arrays.binarySearch(num, sc.nextInt());
    				if(search<0)
    					System.out.println(-1);
    				else
    					System.out.println(search);
    				break;
    			case "getBirthDate":
    				int n=sc.nextInt();
    				for(int i=0;i<n;i++) {
    					String str=sc.next();
    					System.out.println(str.substring(6, 10)+"-"+str.substring(10, 12)+"-"+str.substring(12, 14));
    				}
    				break;
    			default:
    				System.out.print("exit");
    				System.exit(0);
    				break;
    			}
    
    		}
    

    面临的问题:

    怎样去存储这些数据?

    收获:

    学习使用ArrayList动态数组,并且知道他的add、substring、tostring等方法。

    2.2 身份证排序

    关键代码:

    Scanner sc = new Scanner(System.in);
    		Integer num = sc.nextInt();
    		ArrayList<String> id = new ArrayList<>();
    		String temp;
    		for (int i = 0; i < num; i++) {
    			int flag=0;
    			temp=sc.next();
    			Integer age1,age2;
    			age1=Integer.valueOf(temp.substring(6,10));
    			for(int m=0;m<i;m++) {
    				age2=Integer.valueOf(id.get(m).substring(6,10));
    				if(age1<age2) {
    					id.add(m,temp);
    					break;
    				}
    				else if (age1.equals(age2)){
    					age1=Integer.valueOf(temp.substring(10,12));
    					age2=Integer.valueOf(id.get(m).substring(10,12));
    					if(age1<age2) {
    						id.add(m,temp);
    						break;
    					}
    					else if(age1.equals(age2)){
    						age1=Integer.valueOf(temp.substring(12,14));
    						age2=Integer.valueOf(id.get(m).substring(12,14));
    						if(age1<age2) {
    							id.add(m,temp);
    							break;
    						}
    					}
    				}
    				flag=1;
    			}
    			if(flag==1) {
    				id.add(temp);
    			}
    			if(id.isEmpty())
    				id.add(temp);
    		}
    		while(sc.hasNext()) {
    			String order=sc.next();
    			switch (order){
    			case "sort1":
    				for(int i=0;i<num;i++) {
    					System.out.println(id.get(i).substring(6,10)+"-"+id.get(i).substring(10,12)+"-"+id.get(i).substring(12,14));
    				}
    				break;
    			case "sort2":
    				for(int i=0;i<num;i++) {
    					System.out.println(id.get(i));
    				}
    				break;
    				default:
    					System.out.println("exit");
    					System.exit(0);
    			}
    		}
    

    面临的问题

    怎样为身份证里的日期做排序?

    收获

    这题可以直接用array.sort进行排序,相比我的方法简便许多

    2.3 StringBuilder

    关键代码:

    Scanner sc=new Scanner(System.in);
    		while(sc.hasNextInt())
    		{
    			int n=sc.nextInt(),begin=sc.nextInt(),end=sc.nextInt();
    			StringBuilder nums=new StringBuilder("");
    			for(int i=0;i<n;i++) {
    				nums.append(i);
    			}
    			System.out.println(nums.substring(begin, end));
    		}
    

    所面临的问题

    如何对对象直接操作防止内存堆积?

    收获

    运用stringbuilder可以直接修改对象里的元素。

    2.4 动态数组

    关键代码

    Scanner sc = new Scanner(System.in);
    		while(sc.hasNext())
    		{
    			Integer num=sc.nextInt();
    			String[][] str=new String[num][];
    			for(int i=0;i<num;i++)
    			{
    				str[i]=new String[i+1];
    				for(int j=0;j<=i;j++)
    				{
    					str[i][j]=Integer.toString(i+1)+"*"+Integer.toString(j+1)+"="+Integer.toString((i+1)*(j+1));
    					System.out.print(str[i][j]);
    					if(i==j)
    						break;
    					if((i+1)*(j+1)<10)
    					{
    						System.out.print("  ");
    					}
    					else
    					{
    						System.out.print(" ");
    					}
    				}
    				System.out.println();
    			}
    			System.out.println(Arrays.deepToString(str));
    		}
    

    所面临的问题

    怎么创建一个每个二维长度都不一样的二维数组。

    收获

    在创建这种数组时先要定义好一维的长度,再逐个去定义二维的长度,才能创建一个每个二维长度都不一样的二维数组。

  • 相关阅读:
    background和background-size
    获取表单的初始值,模拟placeholder属性
    input[type=checkbox]
    background-size
    input的type属性的修改
    选项卡切换
    2016.12.13
    3. 如何封装查询条件与查询结果到map中
    Java 实现网站当前在线用户统计
    sell-- wordPOI
  • 原文地址:https://www.cnblogs.com/13859862647z/p/15328141.html
Copyright © 2011-2022 走看看