关注 每天一道编程题 专栏,一起学习进步。
题目
写出一个程序,接受一个由字母和数字组成的字符串,和一个字符,然后输出输入字符串中含有该字符的个数。不区分大小写。
输入描述:
第一行输入一个有字母和数字以及空格组成的字符串,第二行输入一个字符。
输出描述:
输出输入字符串中含有该字符的个数。
示例1
输入
ABCDEF
A
输出
1
分析
判断:
是否还有输入?
是:
<String>source接收ABCDEF
<String>targe接收A
遍历source
如果source中与targe有相同字符(忽略大小写)
num++
否:
输出计数
解答
import java.util.Scanner;
public class Main {
public static void main(String[] args){
Scanner s = new Scanner(System.in);
String source="";
String targe;
char[] ac;
char temp;
int num=0;
while(s.hasNext()){
source = s.nextLine();
targe = s.next();
for(int i=0;i<source.length();i++){
if (targe.equalsIgnoreCase(String.valueOf(source.charAt(i))))
num++;
}
System.out.println(num);
}
}
}
知识点:
- String.equalsIgnoreCase(String)
仅用于字符串之间的比较 - !sc.hasNext(“0”)能够在遇见“0”时结束程序
Scanner sc = new Scanner(System.in); while (!sc.hasNext("0")) { System.out.println(sc.next()); }
- scanner不能直接读入单个字符,只能通过String接收字符,然后通过charAt(0)获取该字符
- 通过String.valueOf()将基本类型和object类型转换成String
拓展:
区分大小写,输入“0”结束测试
import java.util.Scanner;
public class Test {
public static void main(String[] args){
Scanner s = new Scanner(System.in);
String all="";
char one;
char[] ac;
char temp;
int num=0;
while(!s.hasNext("0")){
all = s.nextLine();
one = s.next().charAt(0);
for (int i=0;i<all.length();i++){
if (one==all.charAt(i))
num++;
}
System.out.println(num);
}
}
}
注意:由于控制台不能“同时输入两行数据”,因此自己测试的时候只能测试一组(因为当你输入一行然后换行的时候,scanner认为你的本次输入已结束)