Преобразование оценки в петли - PullRequest
0 голосов
/ 24 сентября 2019

У меня есть следующий код:

public static void main(String[] args) {
        convert13to7(7);

    }

    public static int convert13to7(int grade) {
        int newGrade = 0;
        int[] scale13 = {00, 03, 5, 6, 7, 8, 9, 10, 11, 13};
        int[] scale7 =  {-3, 00, 00, 02, 4, 7, 7, 10, 12, 12};

        for (int i = 0; i < scale13.length; i++) {
            if (grade == scale13[i]) {
            newGrade = scale7[i];
            }
        }
    return newGrade;
    }

Смысл этого кода в том, чтобы преобразовать старую датскую шкалу оценок в новую, но проблема в том, что я не получаю никакого вывода при использовании convert13to7 функция.Кто-нибудь видит проблему здесь?

Ответы [ 4 ]

4 голосов
/ 24 сентября 2019

convert13to7 создает преобразованное значение, но не печатает его.

System.out.println(convert13to7(7));

Другие мелкие проблемы:

  1. Имя метода неясно.
  2. Вам не обязательно инициализировать эти два массива каждый раз, когда вызывается метод.
  3. Подумайте о проверке.Возврат 0, если вам не удалось преобразовать ввод, не является хорошим вариантом.

  4. Подумайте о List.indexOf.Это проще и интуитивно понятнее.

1 голос
/ 24 сентября 2019

Чтобы напечатать результат, используйте System.out.println():

int grade = convert13to7(7);
System.out.println(grade);

Я бы порекомендовал вам использовать Map, чтобы не выполнять итерацию каждый раз по массиву:

public final class GradeConverter {

    private final Map<Integer, Integer> map13to7 = new HashMap<>();

    {
        map13to7.put(0, -3);
        map13to7.put(3, 0);
        map13to7.put(5, 0);
        map13to7.put(6, 2);
        map13to7.put(7, 4);
        map13to7.put(8, 7);
        map13to7.put(9, 7);
        map13to7.put(10, 10);
        map13to7.put(11, 12);
        map13to7.put(13, 12);
    }

    public int convert10to7(int grade) {
        return map13to7.getOrDefault(grade, 0);
    }

}

Следующий пункт, обратите внимание на запись 03 вместо 3, потому что в Java префикс 0 является маркером восьмеричной системы.Например, 077 - десятичное значение 63.

0 голосов
/ 24 сентября 2019

Hei,

Вам нужно сохранить вывод в основном или просто распечатать его, если вам не нужно его использовать.

public static void main(String[] args) {
    convert13to7(7);
}

Заменить на

public static void main(String[] args) {
    //if you want just to check the output
    System.out.println(convert13to7(7));

    //or if you want to use it further
    int holdValue = convert13to7(7);
}

Вы также должны обрабатывать исключения (по крайней мере, ArrayIndexOutOfBoundsException).Вот пример использования лямбды (почти то же самое)

interface lambda{
   int getGrades(int[] scale13, int[] scale7, int grade);
}

public class Grades{
    public static void main(String[] args) {

    lambda output = (int[] scale13, int[] scale7, int grade) ->{
        int newGrade = 0;
        try {
            for (int i = 0; i < scale13.length; i++) 
                if (grade == scale13[i]) 
                    newGrade = scale7[i];
        }catch(ArrayIndexOutOfBoundsException e) {
            System.out.println("ArrayIndexOutOfBoundsException Exeption.");
        }

        return newGrade;
    };

    int[] scale13 = {00, 03, 5, 6, 7, 8, 9, 10, 11, 13};
    int[] scale7 =  {-3, 00, 00, 02, 4, 7, 7, 10, 12, 12};

    System.out.println(output.getGrades(scale13, scale7, 7));

}

}

0 голосов
/ 24 сентября 2019

Вам нужно собрать выходные данные, где вы вызвали метод.

package com;

public class Test{
    public static void main(String[] args) {
        // collect output here
        int newGrade = convert13to7(7);
        System.out.println(newGrade);
    }

    public static int convert13to7(int grade) {
        int newGrade = 0;
        int[] scale13 = {00, 03, 5, 6, 7, 8, 9, 10, 11, 13};
        int[] scale7 =  {-3, 00, 00, 02, 4, 7, 7, 10, 12, 12};

        for (int i = 0; i < scale13.length; i++) {
            if (grade == scale13[i]) {
            newGrade = scale7[i];
            }
        }
        // alternatively you can print output here
        System.out.println(newGrade);
    return newGrade;
    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...