1.多行輸入的問(wèn)題
A.包含多行數(shù)據(jù)
image.png
那么寫(xiě)法:
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
while(in.hasNextLine()) {
B.如果是輸入中沒(méi)有明確提到要多行輸入數(shù)據(jù),一般都認(rèn)為他的輸入是多行

image.png
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
while(in.hasNext()) {
2.輸出的時(shí)候
一定要符合規(guī)范,用
System.out.println(sb.toString());
而不是
System.out.printf(sb.toString());
3.輸入是多行數(shù)據(jù)的,但是是有限行的時(shí)候

image.png
第一種寫(xiě)法:
BufferedReader bfr = new BufferedReader(new InputStreamReader(System.in));
int[] result = new int[8];
String line = null;
while ((line = bfr.readLine()) != null&&line.length()!=0) {
第二種寫(xiě)法:
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變?yōu)閕nt
例如將'b'變?yōu)?
int val = 'b' -'a'
將'1'變成1
int val = '1' -'0'
2.將int變?yōu)閏har
例如:將1變?yōu)?b'
(char)('a'+1)
將1變成'1'
(char)(1+'0')
3.'a'-'z'和'A'-'Z'的值不連續(xù)
而且'a'>'z'
所以想要變成int[] chs來(lái)存儲(chǔ)'a'-'Z'不好可以變成
int[] lowerCases = new int[26];
int[] upperCases = new int[26];
4.幾個(gè)總結(jié):
1.將char數(shù)組轉(zhuǎn)化為String的做法是:
String res = String.valueOf(char[])而不是
String res = char[].toString();2.如果使用將int變成二進(jìn)制的String,一定要記得,其位數(shù)可能不夠
String res = Integer.toBinaryString(1); //它是一個(gè)1不是00013.如果想要對(duì)char中的'0'-'9'做++的模10操作,一定記住要還原為字符,不然一定為錯(cuò)誤的字符
(char) ((ch-'0'+9)%10+'0'); // 字符數(shù)字-1 (char) ((ch-'0'+1)%10+'0'); //字符數(shù)字+1 數(shù)字+1位模10是 (i+1)%10 數(shù)字-1模10是(i+9)%10 如果直接-1可能會(huì)變?yōu)樨?fù)數(shù)
5.如果涉及到字符的操作,一定要注意分類(lèi)的情況

image.png
例如該題沒(méi)有明確指出,非字母的字符怎么處理,不能簡(jiǎn)單的分為大寫(xiě)字母和小寫(xiě)字母,這樣會(huì)出現(xiàn)錯(cuò)誤,要注意大寫(xiě),小寫(xiě)和非字母的區(qū)別,

image.png
題中有這樣一段話(huà)
如果單詞中包含有重復(fù)的字母,只保留第1個(gè),其余幾個(gè)丟棄。
就是按順序去重字符的話(huà)
可以用Set記錄去重,用List記錄字符

image.png