面向对象 (8)字符串出现字符个数统计 字母组成回文串判定

题目1编写一个应用程序,统计输入的一个字符串中相同字符的个数,并将统计结果输出。

一、源程序

Test.java

/**统计输入的一个字符串中相同字符的个数
 * 2个方法
 */
package cn.edu.ccut.w1119t1;
import java.util.Scanner;
public class Test {
    public static int counter(String str){//统计该字符串出现字符个数
            String word1 = str.substring(0, 1);//截取当前串首字符
            int num = 0;//累计出现次数
            for(int j=0;j<str.length();j++){//遍历当前串
                if(str.regionMatches(j, word1, 0, 1)){//在str串的j位置取长度为1的子串和截取子串的0位置取长度1的子串开始比较
                    num++;//相同为真则累加
                }
            }
            System.out.print(word1+"的个数为"+num+"\n");//将统计结果输出
            String str1 = str.replaceAll(word1, " ");//统计后的字符转空格
            String str2 = str1.trim();//删除空格
            if(str2.length()!=0){
                counter(str2);//传回新子串递归统计
            }else{//如当前串经遍历长度为0退出方法结束遍历
                return 0;
            }
            return 0;
    }
    public static void main(String[] args) {
        Scanner reader = new Scanner(System.in);
        System.out.print("请输入需要统计的一个字符串\n");
        String str = reader.nextLine();//键盘获取当前行字符串存入str
        counter(str);//调用counter
    }
}

二、成功界面截图

题目2编写程序,输入一个字符串,判断该串中的字母能否组成一个回文串(回文串:一个字符串从前向后读取和从后向前读取都一样)。如:ab<c>c?ba

一、源程序

Test.java

/**判断串中字母能否组成回文串
 * 2个方法
 */
package cn.edu.ccut.w1119t2;
import java.util.Scanner;
public class Test {
    static int letter(String s){//判断是否为英文字母
        char word[] = new char [1];
        word = s.toCharArray();//字符串转字符数组
         if(Character.isLetter(word[0])){//为字母返回0
             return 1;
         }
        return 0;
    }
    public static void main(String[] args) {
        Scanner reader = new Scanner(System.in);
        System.out.print("请输入需要判断的一个字符串\n");
        String str = reader.nextLine();//键盘获取输入的一个字符串
        int num = 0;//判断参数
        int i,j;
        for(i = 0,j = str.length()-1;i < str.length();){
            String word1 = str.substring(i, i+1);//从头取
            if(letter(word1)==0){//如果为非字母跳过
                i++;
                continue;
            }
            String word2 = str.substring(j, j+1);//从尾取
            if(letter(word2)==0){//如果为非字母跳过
                j--;
                continue;
            }
            if(word1.equals(word2)){//判等
                num++;
            }else{
                num=0;
                break;
            }
            i++;j--;
        }
        if(num==0){
            System.out.print("该串中的字母不能组成一个回文串\n");
        }else{
            System.out.print("该串中的字母能组成一个回文串\n");
        }
    }
}

二、成功界面截图

posted on 2019-11-19 19:08  wangxiangyue  阅读(387)  评论(0编辑  收藏  举报

导航