1.多行输入的问题
A.包含多行数据那么写法:
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
while(in.hasNextLine()) {
B.如果是输入中没有明确提到要多行输入数据,一般都认为他的输入是多行
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
while(in.hasNext()) {
2.输出的时候
一定要符合规范,用
System.out.println(sb.toString());
而不是
System.out.printf(sb.toString());
3.输入是多行数据的,但是是有限行的时候
第一种写法:
BufferedReader bfr = new BufferedReader(new InputStreamReader(System.in));
int[] result = new int[8];
String line = null;
while ((line = bfr.readLine()) != null&&line.length()!=0) {
第二种写法:
public class Main {
public static void main(String[] args) throws IOException {
Scanner in = new Scanner(System.in);
String line = null;
while (in.hasNext() && (line = in.nextLine()) != null && line.length() != 0) {
4.一般涉及到字符串的操作
1.将char变为int
例如将'b'变为1
int val = 'b' -'a'
将'1'变成1
int val = '1' -'0'
2.将int变为char
例如:将1变为'b'
(char)('a'+1)
将1变成'1'
(char)(1+'0')
3.'a'-'z'和'A'-'Z'的值不连续
而且'a'>'z'
所以想要变成int[] chs来存储'a'-'Z'不好可以变成
int[] lowerCases = new int[26];
int[] upperCases = new int[26];
4.几个总结:
1.将char数组转化为String的做法是:
String res = String.valueOf(char[])
而不是
String res = char[].toString();
2.如果使用将int变成二进制的String,一定要记得,其位数可能不够
String res = Integer.toBinaryString(1); //它是一个1不是0001
3.如果想要对char中的'0'-'9'做++的模10操作,一定记住要还原为字符,不然一定为错误的字符
(char) ((ch-'0'+9)%10+'0'); // 字符数字-1 (char) ((ch-'0'+1)%10+'0'); //字符数字+1 数字+1位模10是 (i+1)%10 数字-1模10是(i+9)%10 如果直接-1可能会变为负数
5.如果涉及到字符的操作,一定要注意分类的情况
例如该题没有明确指出,非字母的字符怎么处理,不能简单的分为大写字母和小写字母,这样会出现错误,要注意大写,小写和非字母的区别,
题中有这样一段话
如果单词中包含有重复的字母,只保留第1个,其余几个丢弃。
就是按顺序去重字符的话
可以用Set记录去重,用List记录字符