華為線上程式設計題系列-2-計算字元個數
阿新 • • 發佈:2019-01-08
問題描述:
1. 問題涉及知識點.
string.toUpperCase()
string.toLowerCase()
全部轉為大寫或者全部轉為小寫.string.compareToIgnoreCase(key)
忽略大小寫比較.scanner.nextLine()
scanner.next()
scanner.nextInt()
的區別.
2. 自己解法.
- 做一個無限迴圈
scanner.hasNext()
- 分別用第一個用
next()
取,第二個也用next()
取.` - 將取到的字元都轉為大寫.
- 遍歷第一個字串,看和2相同的字元的個數.
import java.util.Scanner;
public class HuaWei_2 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String string_1 = in.next();//取第一個字串
string_1 = string_1.toUpperCase().trim();//去除兩邊的空格,轉為大寫.
String string_2 = in.next();//取第二個字串
string_2 = string_2.toUpperCase().trim();
char key = string_2.charAt(string_2.length() - 1);//取第二個字串的最後一個字元.
int result = getLen(string_1, key);//計算相同的個數
System.out.println(result);
}
private static int getLen(String strArr, char key) {
char[] charArr = strArr.toCharArray();
int num = 0;
for (char aCharArr : charArr) {
if (aCharArr == key) {
num++;
}
}
return num;
}
}
3. 優質答案.
- 採用
string.nextLine()
取字元.不過覺得和原題有所不符,如ASD A
則不能處理. String.valueof(c)
char轉為string
import java.util.*;
import java.util.Scanner;
public class Main{
public static void main(String[] args){
Scanner s=new Scanner(System.in);
String all="";
String one="";
char[] ac;
char temp;
int num=0;
while(s.hasNext())
{
//s.toUpperCase(),String 轉化為大寫
//s.toLowerCase(),String 轉化為小寫
//String字元轉換,s.toCharArray()與s.charAt(index)
//char字元轉換,String.valueOf(c)轉化為String
all=s.nextLine();
one=s.nextLine();
//存放原來所有的
ac=all.toCharArray();
//存放要的字元
//temp=one.charAt(0);
for(int i=0;i<ac.length;i++)
{
if(one.equalsIgnoreCase(String.valueOf(ac[i])))
num++;
}
System.out.println(num);
}
}
}
4. 本題總結.
scanner.nextLine()
scanner.next()
的區別:
next()
:遇見第一個有效字元(非空格,非換行符)時,開始掃描,當遇見第一個分隔符或結束符(空格或換行符)時,結束掃描,獲取掃描到的內容,即獲得第一個掃描到的不含空格、換行符的單個字串。
nextLine()
:可以掃描到一行內容並作為一個字串而被獲取到。nextLine()
方法的結束符只是Enter鍵,即nextLine()
方法返回的是Enter鍵之前的所有字元,它是可以得到帶空格的字串的。