GPLT比赛代码格式问题注意点


本篇是参与GPLT比赛,过程中注意点和自己踩的坑,有些微不足道,记录只为提醒,注意点和事项会陆陆续续补充和更新,感谢您的浏览


1.导包问题

自己看清楚用的啥要导入包,别忘记导包,也不要导错了,不记得自己查,查完背住


2.main方法格式

别写错了,idea用惯了,比赛不惯你

public static void main(String[] args){}

3.sout输出

比赛没有idea的快捷键,所以老老实实的输吧,还有一些单词要会拼写,不然知道但写不出来就很遗憾。
注意是否要 换行,println 和 print 和 printf要区别开


4.获取输入

接收输入数据格式,暂时知道的是用Scanner和BuffedReader这两种,推荐BuffedReader耗时更短

Scanner sc = new Scanner(System.in)
int n = sc.nextInt()
BufferedReader br = new BufferedReader(new InputStreamReader(System.in)

br.read()是以空格或换行作为输入结束符的,获取返回的是字符类型(char)

GPLT比赛代码格式问题注意点_第1张图片

而br.readLine()是以回车换行作为输入结束符的,获取返回的是String型


5.类型转化

别搞混了,如下示例
int 转 String

String str = num.toString();
//或者
String str = String.valueof(num)

String 转 int

int num = Integer.parseInt(str);
//或者
int num = Integer.valueof(str);

6.Java中幂次方的表示方式

java.lang.Math类中的pow方法。 方法声明:Math.pow(double m, double n) 参数说明:m为要求方的数,n为次方数
注意求出的值类型为double


7.Scanner类中nextLine与next、nextInt不能混用

nextLine()会把 nextInt(),next(),nextDouble(),nextFloat()的结束换行符作为字符串读入,进而不需要从键盘输入字符串nextLine便已经转向了下一条语句执行

scanner获取输入的整型变量时(nextInt),将换行符之前的数字获取,不包括之后的换行符;但是nextLine方法是将缓存区中所有的全部获取到,因此nextInt留下来的换行符会被nextLine先获取(就会获取个空的字符串),导致没法再次输入字符串。

解决方法:
在每一个 nextInt(),next(),nextDouble(),nextFloat()后都加一个nextLine()语句,将被next()去掉的Enter过滤掉。
GPLT比赛代码格式问题注意点_第2张图片


8. 做除法时,上下取整,四舍五入

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。


9. char型注意点

char类型数字要转化为int型,需要 -‘0’ 也就是减去0的ascill码

常见的char型数字变int型数字的操作就是:如 ‘32’ - ‘0’

char中字符转int数字,只适合0~9

char型字符不进行操作的话输出就是字符本身,别混淆了

GPLT比赛代码格式问题注意点_第3张图片


10.list集合降序排序

这里用到是集合工具类Collections来实现的,其中有一个为list集合排序的api

在这里插入图片描述

代码如下

Collections.sort(ArrayList名称, Collections.reverseOrder());

11.输出问题对于题目结果的处理

根据题目要求会有不同的输出格式,这一步称为对最终结果的处理

有时候要右对齐,或者补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位就不用补空格,直接显示全部,以字符串方式输出。


12.Scanner中的next()和nextLine()的区别

虽然二者都是获取字符串的,返回结果过也都是字符串类型

next() 以空格或换行作为结束输入符,获取一个字符串输入

GPLT比赛代码格式问题注意点_第4张图片


nextLine()以换行作为结束输入符,获取一行的字符串输入

GPLT比赛代码格式问题注意点_第5张图片


13.大数字 BigInteger 类

对于一些题目,它的运算结果已经超出了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详细使用介绍说明


你可能感兴趣的:(#,Java基础,学习经验,java,intellij-idea,开发语言)