Java 不使用string类中的任何方法将6位字符串与6个字符变量进行比较

Java 不使用string类中的任何方法将6位字符串与6个字符变量进行比较,java,string,char,match,bufferedreader,Java,String,Char,Match,Bufferedreader,“不允许使用字符串类中的任何方法来查找匹配项。您可以也应该使用isDigit()方法。isDigit()方法是字符类中的静态方法。不遵守此约束将导致显著的分数损失。” 目前我正在通过以下方式作弊: System.out.println("Please enter your birthday in the format MMDDYY: "); bday = reader.readLine(); char[] cArr = bday.

“不允许使用字符串类中的任何方法来查找匹配项。您可以也应该使用isDigit()方法。isDigit()方法是字符类中的静态方法。不遵守此约束将导致显著的分数损失。”

目前我正在通过以下方式作弊:

        System.out.println("Please enter your birthday in the format MMDDYY: ");

            bday = reader.readLine();
            char[] cArr = bday.toCharArray();
            [...]
            while (br.ready()) {
            //compare to bday
            comp++;
            if (cArr[0] == one && cArr[1] == two && cArr[2] == three && cArr[3] == four && cArr[4] == five && cArr[5] == six) {
                System.out.println("Your birthday " + bday + " was found at character position " + pos + " in piDigits.txt");
                System.out.println("The number of comparisons so far is: " + comp);
            }
            //move chars around. Any time the first char changes, add one to position to keep track of the digit the match starts on
            one = two;
            pos++;
            two = three;
            three = four;
            four = five;
            five = six;

            //assign new char to the end of the list
            six = (char) br.read();
            while (!Character.isDigit(six) && br.ready()) {
                six = (char) br.read();
            }

我这里的问题是bday.tocharray是string类的一个方法。

我认为这是一个有趣的东西,并提出了这个解决方案。根据问题和一年中的时间,他们似乎没有涵盖我在这里的内容,所以这对你有帮助,但对你没有帮助:)

charc;
BufferedReader br=新的BufferedReader(新的InputStreamReader(System.in));
List inputBirthday=新建ArrayList();
List knownBirthday=new ArrayList();
布尔输入匹配生日=假;
已知出生日期。添加('1');
已知出生日期。添加('2');
已知出生日期。添加('2');
已知出生日期。添加('5');
已知出生日期。添加('0');
已知出生日期。添加('0');
System.out.println(“输入出生日期MMDDYY”);
做{
c=(char)br.read();
如果(!Character.isSpace(c)){
输入生日。添加(c);
}
}while(Character.isDigit(c));
if(inputBirthday.size()!=knownBirthday.size()){
inputMatchesBirthday=false;
}否则{
对于(int i=0;i
它说“不允许使用String类中的任何方法来查找匹配项。”但这里您只是使用它将String转换为Char数组。另外,如前所述,
isDigit()
char
的静态方法,而不是
String
:)我认为这些说明需要解释为禁止您使用
String
类中的任何匹配方法。否则,赋值是不可能的,因为方法调用是访问
字符串的单个字符的唯一方法。向你的老师或助教询问。(顺便问一下,什么是
br
?它没有说“没有方法”,它说的是“没有找到匹配项的方法”,这意味着你不能使用
indexOf()
,但是
tocharray()
charAt()
都是可以的。帮你作弊感觉很奇怪;)与其把这行作为字符串来读,不如,逐字读?这样你就不必使用toCharArray()?我想我应该在stakeoverflow上建立一个帐户,以防我遗漏了一些关于字符串和字符的信息。我知道我/应该/能够像user2004685所说的那样使用它。。。但这也是一位教授,他试图在全班同学面前拿我开玩笑,因为“为什么你需要一个4位数的年份?1904年、2004年、2104年等等都是闰年!”剧透警报,1900年不是,尽管2000年是。请输入4位数的年份。由于您共享的说明没有详细说明,我假设您有一个预定的日期来比较输入
    char c; 
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));       
    List<Character> inputBirthday = new ArrayList<Character>();
    List<Character> knownBirthday = new ArrayList<Character>();
    boolean inputMatchesBirthday = false;

    knownBirthday.add('1');
    knownBirthday.add('2');
    knownBirthday.add('2');
    knownBirthday.add('5');
    knownBirthday.add('0');
    knownBirthday.add('0');

    System.out.println("Enter birthdate MMDDYY.");      
    do{ 
        c = (char) br.read(); 
        if(!Character.isSpace(c)){
            inputBirthday.add(c);
        }
    } while(Character.isDigit(c)); 


    if(inputBirthday.size() != knownBirthday.size()){
        inputMatchesBirthday = false;
    }else{
        for(int i = 0; i < knownBirthday.size(); i ++){
            if(knownBirthday.get(i) != inputBirthday.get(i)){
                inputMatchesBirthday = false;
                break;
            }
            inputMatchesBirthday = true;
        }
    }

    System.out.println("Do they match?: " + (inputMatchesBirthday == true ? "yes" : "no") );