Передача методу агрументов

335
30 октября 2017, 21:38

Пишу класс, в котором есть метод (acceptSelection), принимающий пользовательский ход в виде строки типа "А3", "В4" и тому подобное. В этом методе происходит отделение символа от числа. В итоге получаются четыре переменные : word1, number1, word2, word2, которые являются строковыми и числовыми представлениями пользовательского хода соответственно. То есть , допустим, были ходы А3 и В4 , значит word1="A", word2="B", number1=3, number2=4. После этого необходимо определить их индексы в массиве из метода (getScore).

public class ExampleOne {
    private static int number1;
    private static int number2;
    private static String word1;
    private static String word2;
    private static int index1;
    private static int index2;
    private static String a3 = "A3";
    private static String b4 = "B4";
    public static void main (String args[]) {
        acceptSelection(a3, b4); 
        System.out.println("Index 1 " + index1);
        System.out.println("Index 2 " + index2); }
    public static int getScore (String df, int b) {
        int totalScore=0;
        if (a=="A") {
            totalScore = (0+b)-1;
            //return totalScore;
        }
        else if (a=="B") {
            totalScore = (4+b)-1;
            //return totalScore;
        }
        else if (a=="C") {
            totalScore = (8+b)-1;
            //return totalScore;
        }
        else if (a=="D") {
            totalScore = (12+b)-1;
            //return totalScore;
        }
        else if (a=="E") {
            totalScore = (16+b)-1;
            //return totalScore;
        }
        else if (a=="F") {
            totalScore = (20+b)-1;
            //return totalScore;
        }
        else if (a=="G") {
            totalScore = (24+b)-1;
            //return totalScore;
        }
        return totalScore;
    }
    public static void acceptSelection (String a, String b) {
        Pattern number = Pattern.compile("[0-9]");
        Matcher m = number.matcher(a);
        Matcher m1 = number.matcher(b);
        while (m.find()) {
            number1 =Integer.parseInt(a.substring(m.start(), m.end()));
        }
        while (m1.find()) {
            number2 =Integer.parseInt(b.substring(m1.start(), m1.end()));
        }
        Pattern word = Pattern.compile("[a-zA-Z]");
        Matcher w = word.matcher(a);
        Matcher w1 = word.matcher(b);
        while (w.find()) {
            word1 = a.substring(w.start() , w.end());
        }
        while (w1.find()) {
            word2 = b.substring(w1.start() , w1.end());
        }
        index1 = getScore(word1, number1);
        index2 = getScore(word2, number2);
    }

При вызове метода getScore таким способом index1 = getScore(word1, number1), возвращается нулевое значение totalScore. Однако, если вызвать метод таким образом: index1 = getScore("A", 3) все работает правильно. Не могу понять в чем проблема. Кажется, что проблема кроется в простом, просто не вижу.

Answer 1

Предлагаю то же самое, но несколько попроще.

UPD: и еще несколько проще:

public class ExampleOne {
    private static String a3 = "A3";
    private static String b4 = "B4";
    public static void main(String args[]) {
        System.out.println("Index 1 " + acceptSelection(a3));
        System.out.println("Index 2 " + acceptSelection(b4));
    }
    public static int getScore(char ch, int num) {
        int code = (int)ch;
        return  (code-65)*4+num-1;
    }
    public static int acceptSelection(String str) {
        char word = str.charAt(0);
        int number = Character.getNumericValue(str.charAt(1));
        return getScore( word, number);
    }
}
READ ALSO
Почему вылетает NullPointerException при использовании JavaRDD?

Почему вылетает NullPointerException при использовании JavaRDD?

Взял пример отсюда, изменил только папку baseDir, файл в нее положилПостоянно появляется ошибка: Exception in thread "main" org

271
Увеличить массив на n раз

Увеличить массив на n раз

Всем приветТолько недавно начать осваивать Java

349
Приведение параметризованных типов

Приведение параметризованных типов

В сервлете необходимо получить инстанс DAO который обернут в AtomicReference, но при приведении типов компилятор волнуется и пишет:

323
JavaFX объявление @FXML объектов

JavaFX объявление @FXML объектов

Есть ли такой макрос, который автоматически генерировал в коде все объекты из filefxml?

189