2016-10-17 7 views
-2

Я делаю простую программу, которая принимает 2 оценки от пользователя, делает некоторые основные суммы с оценками и предоставляет пользователю свой «фитнес-возраст». Проблема в том, что я не могу использовать данные от пользователя, так как он отличается от расчета по-разному. Я попытался скопировать другой код на этом веб-сайте, но я думаю, что, возможно, я испортил свой собственный код, любую помощь?JAVA: Как использовать пользовательские входы в другом методе из того, в котором он был создан?

import java.util.Scanner; 

class Health { 

    public static void main(String[] args) { 

     int in = firstScore(); 
     int in = secondScore(); 
     revealAge(in); 
     System.exit(0); 

    } 

    public static void firstScore() { 

     Scanner firstScores = new Scanner(System.in); 

     System.out.println("What score did you recieve in your first exercise out of 40?"); 

     int score1 = firstScores.nextInt(); 

     return score1; 

    } 

    public static void secondScore() { 

     Scanner secondScores = new Scanner(System.in); 

     System.out.println("What score did you recieve in your second exercise out of 40?"); 

     int score2 = secondScores.nextInt(); 

     return score2; 

    } 

    public static void revealAge(int score1, int score2) { 

     int average = (score1 + score2)/2; 

     int fitnessAge = (((average * 8)/5) + 10); 

     System.out.println("Your average score is " + average + "."); 

     System.out.println("Your PC Fit age is" + fitnessAge + "."); 

     return; 

    } 

} 
+0

Почему вы обновляете 'in'? Назначьте возвращаемое значение другой переменной и передайте ее в 'openAge' – Li357

+0

Метод' void' не возвращает значения, измените тип возврата с 'void' на' int'. –

ответ

0

Вы должны вернуть int в обоих secondScore() и firstScore() методов. И у вас есть одно имя (in) для многих объявлений переменных в вашем методе main. Сделал некоторые изменения в вашем коде в соответствии с указанными проблемами:

import java.util.Scanner; 

class Health { 

    public static void main(String[] args) { 

     int in1 = firstScore(); 
     int in2 = secondScore(); 
     revealAge(in1, in2); 
     System.exit(0); 

    } 

    public static int firstScore() { 

     Scanner firstScores = new Scanner(System.in); 

     System.out.println("What score did you recieve in your first exercise out of 40?"); 

     int score1 = firstScores.nextInt(); 

     return score1; 

    } 

    public static int secondScore() { 

     Scanner secondScores = new Scanner(System.in); 

     System.out.println("What score did you recieve in your second exercise out of 40?"); 

     int score2 = secondScores.nextInt(); 

     return score2; 

    } 

    public static void revealAge(int score1, int score2) { 

     int average = (score1 + score2)/2; 

     int fitnessAge = (((average * 8)/5) + 10); 

     System.out.println("Your average score is " + average + "."); 

     System.out.println("Your PC Fit age is " + fitnessAge + "."); 

    } 

} 
0

У вас есть несколько проблем:

  • Методы firstScore() и secondScore() оба определены не возвращать ничего (это то, что void делает в определении метода) - на основе того, как вы их используете, вы вероятно, хотите вместо этого вернуть int.
  • Вы пытаетесь определить in дважды в своем способе main. Вы должны назвать эти переменные по-разному. Как насчет int firstScore и int secondScore?
  • Вызов revealAge из вашего метода main должен передавать оба этих параметра, а не только один.

Устранение этих проблем должно помочь скомпилировать ваш код. Я настоятельно рекомендую переходить через некоторые обучающие программы java, так что ошибки, подобные этому, станут более очевидными для вас в будущем.

  • Нит: ваше форматирование довольно неустойчивое. Изучите лучшие практики форматирования java-кода.