2017-02-06 2 views
-8

Мне нужно вернуть тип возвращаемого значения в String.(Java) хочу вернуть значение String из метода

Это рабочий код:

import java.util.Scanner; 
    public class Score { 
     public void Display(){ 
      Scanner input = new Scanner(System.in); 
      System.out.println("Please enter your marks: "); 
      int newPoint = input.nextInt(); 
      newPoint = calculateSc(newPoint); 
      System.out.println(newPoint); 
     } 

     public static int calculateSc(int point) { 
      if (point <= 100 && point >= 80) { 
       return 1; 
      }else if (point <= 79 && point >= 60) { 
       return 2; 
      }else if (point <= 59 && point >= 50) { 
       return 3; 
      }else if (point <= 49 && point >= 40) { 
       return 4; 
      }else if (point <= 39 && point >= 30) { 
       return 5; 
      }else { 
       return -1; 
      } 
     } 
    } 

Это желание код (код ошибки):

import java.util.Scanner; 
     public class Score { 
      public void Display(){ 
       Scanner input = new Scanner(System.in); 
       System.out.println("Please enter your marks: "); 
       int newPoint = input.nextInt(); 
       newPoint = calculateSc(newPoint); 
       System.out.println(newPoint); 
      } 
      public static String calculateSc(int point) { 
       if (point <= 100 && point >= 80) { 
        return "You got A+";//String value 
       }else if (point <= 79 && point >= 60) { 
        return "You got A"; 
       }else if (point <= 59 && point >= 50) { 
        return "You got A-"; 
       }else if (point <= 49 && point >= 40) { 
        return "You got B"; 
       }else if (point <= 39 && point >= 30) { 
        return "You got C"; 
       }else { 
        return "You got F (failed"; 
       } 
      } 
     } 

Я думаю, вы все понимаете, что я хочу, чтобы do.If у вас есть какие-либо правильное решение ответьте. Но не хотите менять второй метод String calculateSc()

+5

Просто измените тип возврата на 'String'. – resueman

+2

Нет, я не знаю, что вы имеете в виду. Пожалуйста, объясните правильно наблюдаемое и фактическое поведение. – h22

+2

Тип возврата во втором примере - 'int ', но ваши возвращаемые значения -' String'. Измените либо тип значений, либо тип возврата, чтобы они соответствовали. Кроме того, '(point <= 60 && point> = 70)' никогда не может быть «истинным». –

ответ

1

Когда вы возвращаете String, почему вы возвращаете тип типа int? Попробуйте узнать больше о методах и возвращающие типы

public static String calculateSc(int point) { 
     if (point <= 100 && point >= 80) { 
      return "You got A+"; 
     } else if (point <= 60 && point >= 70) { 
      return "You got A"; 
     } else { 
      return "You got F (Failed)"; 
     } 
    } 

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

newPoint = calculateSc(newPoint); 
System.out.println(newPoint); 

только с этим,

System.out.println(calculateSc(newPoint)); 
+0

Спасибо за совет ушей. Тогда проблема вводится' int point' @jack jay –

+0

@MrRango Я не получу вас. проблема в 'int point' –

+0

Требуется' int' found 'java.lang.String' @jack jay –

1

Как вы упомянули, вы не хотите изменять метод возврата из int.

Вы не можете вернуть String в методе int, но вы можете распечатать его с помощью System.out.print или просто вычислить метод, и другой метод возвращает строку в зависимости от степени.

0

открытые статические INT calculateSc (...

INT там означает функцию будет возвращать тип int.

В рабочем коде все возвращаемые операторы возвращают int, целые числа.

В нерабочем коде вы пытаетесь вернуть Строка вместо: последовательность символов, а не целое число.

Функция не может вернуть тип, отличный от возвращаемого им типа.

Смежные вопросы