关注 每天一道编程题 专栏,一起学习进步。

题目

写出一个程序,接受一个由字母和数字组成的字符串,和一个字符,然后输出输入字符串中含有该字符的个数。不区分大小写。

输入描述:

第一行输入一个有字母和数字以及空格组成的字符串,第二行输入一个字符。

输出描述:

输出输入字符串中含有该字符的个数。

示例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);
        }

    }
}

知识点:

  1. String.equalsIgnoreCase(String)
    仅用于字符串之间的比较
  2. !sc.hasNext(“0”)能够在遇见“0”时结束程序
    Scanner sc = new Scanner(System.in);
    while (!sc.hasNext("0")) {
    System.out.println(sc.next());
    }
    
  3. scanner不能直接读入单个字符,只能通过String接收字符,然后通过charAt(0)获取该字符
  4. 通过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认为你的本次输入已结束)