笔试:处理输入基础
笔试都是acm模式,需要自己处理输入输出
注意先把笔试中的编译器修改成java
首先注意类名都是规定好的,一般是Main类,最终直接new一个对象输出结果
如果一开始我们命名是Solution1
有三处地方需要修改
输入要先完全输入完再输出
上次阿里笔试发现的问题,不要在输入过程中往控制台打印东西
搞成一个list存数据再打印吧
输出成
2,1,2,3 这种形式时
最后一个不打逗号
写成这样吧:
for(int i=0;i<resultList.size();i++) { System.out.print(resultList.get(i)); if(i!=resultList.size()-1) { System.out.print(","); } }
其次有一些常用函数:
为了导入包,需要import java.util.*;
Scanner sc=new Scanner(System.in);//输入 int n=sc.nextInt();//一个整数 String str=sc.next();//一个字符串 String str1=sc.nextLine().split(" ")[0];//获取一行并且分割
然后会经常碰到一些转换,new一些数组或者二维数组
Integer.parseInt(str.split("->")[0]);//字符串转int型 String[][] table=new String[n][2];//二维数组
总的来说,只要是空格分隔的,总能直接next或者nextint
逗号或者其他分割的,需要split
举几个题目的例子:
题1:
Scanner sc=new Scanner(System.in); int n=sc.nextInt(); String[][] table=new String[n][2]; for(int i=0;i<n;i++) { table[i][0]=sc.next(); table[i][1]=sc.next(); } Solution1 solution1=new Solution1();
第二题:
Scanner sc=new Scanner(System.in); String[] timeStr=sc.nextLine().split(","); //存第一行数据 List<Integer> list=new ArrayList<>(); for(int i=0;i<timeStr.length;i++) { list.add(Integer.parseInt(timeStr[i])); } //存第二行数据 String[] relyStr=sc.nextLine().split(","); List<Integer[]> table=new ArrayList<>(); for(String str:relyStr) { Integer[] rely=new Integer[2]; rely[0]=Integer.parseInt(str.split("->")[0]); rely[1]=Integer.parseInt(str.split("->")[1]); table.add(rely); }
第三题:
Scanner sc=new Scanner(System.in); int row=sc.nextInt(); int col=sc.nextInt(); int t=sc.nextInt(); int[][] table=new int[row][col]; for(int i=0;i<row;i++) { for(int j=0;j<col;j++) { table[i][j]=sc.nextInt(); } }