自己看清楚用的啥要导入包,别忘记导包,也不要导错了,不记得自己查,查完背住
别写错了,idea用惯了,比赛不惯你
public static void main(String[] args){}
比赛没有idea的快捷键,所以老老实实的输吧,还有一些单词要会拼写,不然知道但写不出来就很遗憾。
注意是否要 换行,println 和 print 和 printf要区别开
接收输入数据格式,暂时知道的是用Scanner和BuffedReader这两种,推荐BuffedReader耗时更短
Scanner sc = new Scanner(System.in)
int n = sc.nextInt()
BufferedReader br = new BufferedReader(new InputStreamReader(System.in)
br.read()是以空格或换行作为输入结束符的,获取返回的是字符类型(char)
而br.readLine()是以回车换行作为输入结束符的,获取返回的是String型
别搞混了,如下示例
int 转 String
String str = num.toString();
//或者
String str = String.valueof(num)
String 转 int
int num = Integer.parseInt(str);
//或者
int num = Integer.valueof(str);
java.lang.Math类中的pow方法。 方法声明:Math.pow(double m, double n) 参数说明:m为要求方的数,n为次方数
注意求出的值类型为double
nextLine()会把 nextInt(),next(),nextDouble(),nextFloat()的结束换行符作为字符串读入,进而不需要从键盘输入字符串nextLine便已经转向了下一条语句执行。
scanner获取输入的整型变量时(nextInt),将换行符之前的数字获取,不包括之后的换行符;但是nextLine方法是将缓存区中所有的全部获取到,因此nextInt留下来的换行符会被nextLine先获取(就会获取个空的字符串),导致没法再次输入字符串。
解决方法:
在每一个 nextInt(),next(),nextDouble(),nextFloat()后都加一个nextLine()语句,将被next()去掉的Enter过滤掉。
Math.abs()
返回参数的绝对值。
Math.ceil()
对数进行上舍入,向上取整
返回大于等于( >= )给定参数的的最小整数,类型为双精度浮点型。
Math.floor()
对数进行下舍入,向下取整
返回小于等于(<=)给定参数的最大整数 。
Math.round()
它表示四舍五入,算法为 Math.floor(x+0.5),即将原来的数字加上 0.5 后再向下取整,所以,Math.round(11.5) 的结果为12,Math.round(-11.5) 的结果为-11。
char类型数字要转化为int型,需要 -‘0’ 也就是减去0的ascill码
常见的char型数字变int型数字的操作就是:如 ‘32’ - ‘0’
char中字符转int数字,只适合0~9
char型字符不进行操作的话输出就是字符本身,别混淆了
这里用到是集合工具类Collections来实现的,其中有一个为list集合排序的api
代码如下
Collections.sort(ArrayList名称, Collections.reverseOrder());
根据题目要求会有不同的输出格式,这一步称为对最终结果的处理
有时候要右对齐,或者补0,如果用上C的printf就会容易处理的多
下面就把printf的基本使用说明一下
%.nf
比如说是
double n = 3.1415926;
System.out.printf("%.2f", n);
那么输出结果就是3.14,意思就是保留两位小数。
\n
就是换行的意思
System.out.printf("离离原上草\n");
打印并换行
%ns
假设是
int n = 1;
System.out.printf("%5s", n);
输出结果就是00001,它就是保证输出结果至少为5个字符,不足5位在前面用空格补齐,超过5位就不用补空格,直接显示全部,以字符串方式输出。
虽然二者都是获取字符串的,返回结果过也都是字符串类型
next() 以空格或换行作为结束输入符,获取一个字符串输入
nextLine()以换行作为结束输入符,获取一行的字符串输入
对于一些题目,它的运算结果已经超出了long型范围,这时需要使用BigInteger
导包
java.math.BigInteger
常用的一些方法
构造方法
BigInteger num = new StringBuilder(这里面是String型的,比如"123");
把int型数字作为BigInteger型
BigInteger bi = BigInteger.valueOf(这里面是int型的数);
此方法返回一个 BigInteger,其值为 (this / val)。
BigInteger型的数.divide(n) //等价于 BigInteger型的数/n ->结果为BigInteger类型
详细地址:BigInteger详细使用介绍说明