Java, класс, логическое, логический беспорядок - PullRequest
0 голосов
/ 11 ноября 2018

Итак, нам дали кодировать этот ScantronGrader для домашней работы, и в спецификациях говорится, что мы должны создать этот класс isValid, чтобы проверить правильность опций, попадающих в A, B, C или D (все в верхнем регистре), я сначала попробовал switch (ошибка), if-else-if (ошибка); do-while (О, я так плохо знаю и ошибаюсь). Сначала я попробовал цикл for, но значение не увеличилось.

В своем недавнем переводе это моя проблема. TBH, я даже не знаю, что я делаю больше.

public static boolean isValid(String inputstr)
    {
        int x = 0;
        do
        {
            switch (inputstr.charAt(x))
            {
            case 'A':
            case 'B':
            case 'C':
            case 'D':
                return true;
        default: return false;
        x++;    
            }
        } while (x < inputstr.length());
    }
}

Проблема в том, что он не позволяет мне увеличивать счетчик. Теперь я должен сделать это, иначе, как бы я сдвинулся правильно? В любом случае, пожалуйста, помогите.

Ответы [ 3 ]

0 голосов
/ 11 ноября 2018

Не уверен, что я понял, что должен делать этот метод, но если он должен возвращать true, только если строка содержит эти буквы, вы можете сделать это:

public static boolean isValid(String inputstr)
{
    int x = 0;
    boolean bool = true;
    do
    {
        if(!(inputstr.charAt(x) == 'A' || inputstr.charAt(x) == 'B' || inputstr.charAt(x) == 'C' || inputstr.charAt(x) == 'D'))
    {
        bool = false;
    }
    x++;
    }while (x < inputstr.length());
    return bool;
}
0 голосов
/ 11 ноября 2018

Хорошо, поэтому после некоторых идей отсюда (спасибо, что обратились за помощью), я играю с этим, который, кажется, работает. Просто дайте мне знать, если я делаю что-то ненужное / бесполезное, или есть более эффективный способ сделать это, пожалуйста?

public static boolean isValid(String inputstr) {
        int count = 0;
        for (int x = 0; x < inputstr.length(); x++) {
            switch (inputstr.charAt(x)) {
            case 'A':
            case 'B':
            case 'C':
            case 'D':
            break;
            default: count++;
            }
        }
        if (count == 0) {
            return true;
        }
        else {
            return false;
        }
    }
0 голосов
/ 11 ноября 2018
int x = 0;
for(int i; i<inputstr.length(); i++){
    if (isValid(inputstr.charAt(i)){
    // nothing
    } else {
        x++;
    }        
System.out.println(x);

является допустимой реализацией:

public static boolean isValid(Char c) {
    switch (c)
        {
        case 'A':
        case 'B':
        case 'C':
        case 'D':
            return true;
    }
    // default can be ommitted, since this is executed in case it's neither element... which is default
    return false;

    }
} 

ps: пожалуйста, изучите программирование должным образом;) найдите преподавателя, который объяснит, что это делает

пс2: Понятия не имею, зачем вам сдвигаться вправо ...

...