2015-01-15 4 views
-2

EDIT:Где мой код не так?

Я думаю, что скопировал немного неправильный код!

public class GradeCalculator { 

public static void calculateGrade(int mark) { 
    if (mark >= 70) System.out.println("grade = A"); 
    if (mark >= 60) System.out.println("grade = B"); 
    if (mark >= 50) System.out.println("grade = C"); 
    if (mark >= 40) System.out.println("grade = D"); 
    if (mark < 40) System.out.println("grade = F"); 
} 

public static void main(String[] args) { 

} 
} 

Я только начинаю пробовать Java (или какое-либо программирование. Я работаю свой путь через практику вопросы. У меня есть этот код и нужно писать заявления в основном методе, чтобы проверить его.

Как я могу это сделать?

Спасибо за любую помощь/указатели в правильном направлении.

Марк

+0

Ваш код не компилируется, приятель. –

+0

Если у вас есть ошибка в коде, первое, что вам нужно сделать, это использовать ваш отладчик, чтобы понять, почему ваша программа делает то, что она делает. Я также предлагаю вам использовать reformatter в вашей среде IDE. BTW Вы можете включить код выше в 1 лайнер. –

ответ

1

Вам нужно вызвать метод из main. Я настоятельно рекомендую вам пройти через very basic Java tutorial, вам не хватает основных понятий.

Как только вы это сделали, вам необходимо иметь else. В вашем случае, если первый if будет выполнен, следующие if s будут.

Подумайте об этом, if (mark >= 70) затем обязательно if (mark >= x) для любых x <= 70.

1

Ну, чтобы начать этот фарс, давайте редактировать свой код в то, что компилирует и работает в бы бессмысленно, как:

public class GradeCalculator { 

    public static void claculateGrade (int mark) { 
     if (mark >= 70) System.out.println("grade = A"); 
     else if (mark >= 60) System.out.println("grade = B"); 
     else if (mark >= 50) System.out.println("grade = C"); 
     else if (mark >= 50) System.out.println("grade = D"); 
     else if (mark >= 40) System.out.println("grade = E");  
    } 

    public static void main (String[] args) { 

    } 

} 

Теперь, чтобы напечатать класс какой-то парень получил бы с некоторыми марками, вы можете позвонить ваш метод «claculateGrade»:

public static void main (String[] args) { 
    claculateGrade(55); 
} 

Это должно печатать «grade = C» на консоли. Полный код:

public class GradeCalculator { 

    public static void claculateGrade (int mark) { 
     if (mark >= 70) System.out.println("grade = A"); 
     else if (mark >= 60) System.out.println("grade = B"); 
     else if (mark >= 50) System.out.println("grade = C"); 
     else if (mark >= 50) System.out.println("grade = D"); 
     else if (mark >= 40) System.out.println("grade = E");  
    } 

    public static void main (String[] args) { 
     claculateGrade(55); 
    } 

} 

Теперь можно было бы дополнительно улучшить это. Давайте начнем с создания метод возвращает класс:

public static char getGrade (int mark) { 
    if (mark >= 70) return 'A'; 
    else if (mark >= 60) return 'B'; 
    else if (mark >= 50) return 'C'; 
    else if (mark >= 50) return 'D'; 
    else if (mark >= 40) return 'E'; 

    /* if below 40, return "fail" */ 
    return 'F'; 
} 

Это изменит ваш код в:

public class GradeCalculator { 

    public static char getGrade (int mark) { 
     if (mark >= 70) return 'A'; 
     else if (mark >= 60) return 'B'; 
     else if (mark >= 50) return 'C'; 
     else if (mark >= 50) return 'D'; 
     else if (mark >= 40) return 'E'; 

     /* if below 40, return "fail" */ 
     return 'F'; 
    } 

    public static void main (String[] args) { 
     System.out.println("Grade: " + getGrade(55)); 
    } 

} 
+0

Итак, проблема была в другом случае, если (как только я разместил код, который я имел в виду в моем исходном вопросе!) Спасибо за ответы. –

0

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

public static char calculateGrade(int mark) { 
    return "UUUUEDCBAAAA".charAt(mark/10); 
} 

System.out.println("Grade = " + calculateGrade(65)); 

Путь код работает в том, что он использует тот факт, каждый регион кратно 10. т.е. когда вы делите на 10 вы получаете

100 -> 10 
90 - 99 -> 9 
80 - 89 -> 8 
70 - 79 -> 7 
60 - 69 -> 6 
50 - 59 -> 5 
40 - 49 -> 4 
30 - 39 -> 3 
20 - 29 -> 2 
10 - 19 -> 1 
0 - 9 -> 0 

Так что теперь все числа обращаются в регионах 0 до 10. Однако мы хотим ранги как буквы, так что вы получите

100 -> A 
90 - 99 -> A 
80 - 89 -> A 
70 - 79 -> A 
60 - 69 -> B 
50 - 59 -> C 
40 - 49 -> D 
30 - 39 -> E 
20 - 29 -> U 
10 - 19 -> U 
0 - 9 -> U 
+0

Трудно видеть, что делает код –

+0

@OlaviMustanoja Я обновил свой ответ. Было ли непонятно, что разделение на 10 было непонятным или что поиск буквы в строке неясен? –

+1

Извините, мой комментарий был немного расплывчатым. Я имел в виду, что для очевидного новичка этот фрагмент кода может быть немного подавляющим. Теперь, когда вы это объяснили, все в порядке. –

0

чтобы сделать код работу, которую нужно вызвать свой метод, как все ваши кодирования выполняется в той части, т.е. печатать на основе о f состояние.

public class GradeCalculator { // This is your class 

    public static void calculateGrade(int mark) { 
    //This is the method containing conditions 
    on the basis of these conditions the corroesponding 
    sentences will be printed 
     if (mark >= 70) System.out.println("grade = A"); 
     if (mark >= 60) System.out.println("grade = B"); 
     if (mark >= 50) System.out.println("grade = C"); 
     if (mark >= 40) System.out.println("grade = D"); 
     if (mark < 40) System.out.println("grade = F"); 
    } 
    //now u need to call the method from your main method.. main method is the entry point of your program so it will start from main then check your method call and do as per the code written there 
    public static void main(String[] args) { 
    // to call your method just right your method name and enter marks 

    calculateGrade(50); // you can enter any integer 
    } 
    } 
Смежные вопросы