任意输入字符,对字符匹配进行判断

package com.tang.kuohao;

import java.util.InputMismatchException;
import java.util.Scanner;

public class KuoHaoDui {
    public static String STRINGA = "{";
    public static String STRINGB = "[";
    public static String STRINGC = "(";
    public static String STRINGAA = "}";
    public static String STRINGBB = "]";
    public static String STRINGCC = ")";

/*
     * 描述 现在,有一行括号序列,请你检查这行括号是否配对。
     *
     * 输入
     * 第一行输入一个数N(0<N<=100),表示有N组测试数据。后面的N行输入多组输入数据,每组输入数据都是一个字符串S(S的长度小于10000,
     * 且S不是空串),测试数据组数少于5组。数据保证S中只含有"[","]","(",")"四种字符 输出
     * 每组输入数据的输出占一行,如果该字符串中所含的括号是配对的,则输出Yes,如果不配对则输出No
     */

public static void main(String[] args) {
        try {
            System.out.println("请输入一个整数:");
            Scanner s = new Scanner(System.in);
            int str = s.nextInt();
            if (str > 100) {
                System.out.println("不能大于100组测试数据");
                return;
            }
            for (int i = 0; i < str; i++) {
                System.out.println("请输入第" + (i + 1) + "测试数据组:");
                Scanner si = new Scanner(System.in);
                String sp = si.next();
                int cc = new KuoHaoDui().isHefa(sp);
                if (cc == 0) {
                    String sc = new KuoHaoDui().dataReturn(sp);
                    if (sc.equals("true")) {
                        System.out.println("Yes");
                    } else if (sc.equals("false")) {
                        System.out.println("No");
                    }
                } else {
                    System.out.println("数据不合法,请检查!");
                }

}
        } catch (InputMismatchException e) {
            // TODO: handle exception
            e.printStackTrace();
        } catch (Exception e) {
            // TODO: handle exception
            e.printStackTrace();
        }
    }

public String dataReturn(String sp) {
        String returnFlag = "";
        int start = 0;
        
        int end = sp.length();
        int qumo = end % 2;
        if (qumo != 0) {
            return "false";
        }

for (int i = 0; i < end; i++) {
            String cc = sp.substring(start, start + 1);
            if (cc.equals(STRINGA)) {
                returnFlag = isEquersStr(cc, STRINGAA, sp);
            } else if (cc.equals(STRINGAA)) {
                returnFlag = isEquersStr(cc, STRINGA, sp);
            } else if (cc.equals(STRINGB)) {
                returnFlag = isEquersStr(cc, STRINGBB, sp);
            } else if (cc.equals(STRINGBB)) {
                returnFlag = isEquersStr(cc, STRINGB, sp);
            } else if (cc.equals(STRINGC)) {
                returnFlag = isEquersStr(cc, STRINGCC, sp);
            } else if (cc.equals(STRINGCC)) {
                returnFlag = isEquersStr(cc, STRINGC, sp);
            } else {
                returnFlag = "nohf";
            }
            start++;
        }
        return returnFlag;
    }

private  int getChuXianCiShu(String str, String sp) {
        int countSize = 0;
        int spit = 0;
        for (int i = 0; i < sp.length(); i++) {
            String strChar = sp.substring(spit, spit + 1);
            if (str.equals(strChar)) {
                countSize++;
            }
            spit++;
        }
        return countSize;
    }
    
    private  String isEquersStr(String str1, String str2, String sp) {
        String sjhf = "true";
        int a = getChuXianCiShu(str1, sp);
        int b = getChuXianCiShu(str2, sp);
        if (a != b) {
            sjhf = "false";
        }
        return sjhf;
    }

private  int  isHefa(String sp) {
        int cc=0;
        int spit = 0;
        for (int i = 0; i < sp.length(); i++) {
            String strChar = sp.substring(spit, spit + 1);
            if (!(strChar.equals(STRINGA) || strChar.equals(STRINGAA)
                    || strChar.equals(STRINGB) || strChar.equals(STRINGBB)
                    || strChar.equals(STRINGC) || strChar.equals(STRINGCC))) {
                cc++;
            }
            spit++;
        }
        return cc;
    }
}

时间: 2024-11-05 20:45:00

任意输入字符,对字符匹配进行判断的相关文章

任意输入0-100之间的数,判断是不是素数(质数)

Console.WriteLine("请从0到100之间随机输入一个数,判断它是不是质数:"); int a = int.Parse(Console.ReadLine()); int i; int count= 0;//定义一个变量作为后面if判断的标签. if (a >= 2 && a <= 100) { for (i = 2; i <= a - 1; i++) { if (a % i == 0) { count = 1; } } if (count

输入一串字符,字符个数不超过100,且以“.”结束。 判断它们是否构成回文。

输入一串字符,字符个数不超过100,且以“.”结束. 判断它们是否构成回文. [分析]所谓回文指从左到右和从右到左读一串字符的值是一样的,如12321,ABCBA,AA等.先读入要判断的一串字符(放入数组letter中),并记住这串字符的长度,然后首尾字符比较,并不断向中间靠拢,就可以判断出是否为回文. 程序如下: #include<iostream>using namespace std;int main(){ char ch,letter[101]; cin>>ch; int

编程题:输入一串字符,程序会自动将大写字母转换为小写

编程题:输入一串字符,程序会自动将大写字母转换为小写 #include <stdio.h> #include <conio.h> main() { int i=0; char a[50],ch; printf("输入一串字符,程序会自动将大写字母转换为小写\n"); printf("按任意键继续,按Esc键退出\n"); while(ch=getch()!=27) { fflush(stdin); printf("请输入字符串:\n

JavaScript表单验证,输入中文时字符长度为2

获取输入框中的字符长度进行表单验证,当输入英文时字符长度就是1,当输入中文时字符长度为2. 字符数为4~16位, 上图: 一个中文抵两英文. 上代码 1 btn.addEventListener('click',ov,false); 2 3 function ov(){ 4 var inputValue = text.value.trim(); 5 //去掉最前最后的空格 6 if (countLength(inputValue) < 4 || countLength(inputValue) >

题目数据输入中间读入字符

http://acm.hnust.edu.cn/JudgeOnline/problem.php?cid=1310&pid=1 科大oj上这道题在输入中间读入字符,开始用字符都怎么都不对,看了老师的程序发现用的是字符串... 顺便附下代码: #include<cstdio> #include<algorithm> #include<iostream> #include<cmath> #include<cstring> #define inf

输入三个字符(可以重复)后,按各字符的ASCII码从小到大的顺序输出这三个字符。

ASCII码排序 时间限制:3000 ms  |  内存限制:65535 KB 难度:2 描述 输入三个字符(可以重复)后,按各字符的ASCII码从小到大的顺序输出这三个字符. 输入 第一行输入一个数N,表示有N组测试数据.后面的N行输入多组数据,每组输入数据都是占一行,有三个字符组成,之间无空格. 输出 对于每组输入数据,输出一行,字符中间用一个空格分开. 样例输入 2 qwe asd 样例输出 e q w a d s #include <iostream> using namespace

谭浩强 C程序设计 8.11写一函数用起泡法对输入的个字符按由小到大的顺序排列。

#include <stdio.h> int main(){ void maoPaoSort(char str[]); char arr[10]; printf("请输入10个字符:\n"); gets(arr);//gets回车不会在缓冲区中存着,scanf函数中,回车会存在缓冲区中 maoPaoSort(arr); for(int j=0; j<10; j++){ printf("%3c",arr[j]); } printf("\n&

标C编程笔记day07 常用标准库介绍、字符串输入处理、字符指针的使用

常用标准库: assert.h:断言,包含assert宏.可以进行自我检查 ctype.h:字符处理,字符的分类,大小转换 errno.h:错误信息处理 float.h:浮点数特性 limits.h:整数的大小,提供了描述整数类型的宏 lcale.h:本地化 math.h:数学函数 setjmp.h:跳转 signal.h:信号处理 stdarg.h:可变长参数处理 stddef.h:经常使用的类型的定义 stdio.h:输入输出 string.h:字符串处理 stdlib.h:其他函数,字符串

c#编程:任意输入星期几的一个字母来判断一下是星期几

//任意输入星期几的一个字母来判断一下是星期几,如不能判断,则再继续输入下一个字母,如再不能, //再输入下一个字母,直到能判断出为止,并统计到能判断时输入的字母的个数. <pre name="code" class="csharp">using System; using System.Collections.Generic; using System.Linq; using System.Text; //任意输入星期几的一个字母来判断一下是星期几,如

12.30 字符集和字符编码(Charset &amp; Encoding)(转载)

——每个软件开发人员应该无条件掌握的知识! ——Unicode伟大的创想! 相信大家一定碰到过,打开某个网页,却显示一堆像乱码,如"б?ЯАзЪСЯ"."?????????"?还记得HTTP中的Accept-Charset.Accept-Encoding.Accept-Language.Content-Encoding.Content-Language等消息头字段?这些就是接下来我们要探讨的. 目录: 1.基础知识 2.常用字符集和字符编码 2.1. ASCII字符