【问题标题】:JAVA: How do i use user inputs in a different method from the one in which it was created?JAVA:我如何以不同于创建用户输入的方法使用用户输入?
【发布时间】:2016-10-17 23:50:17
【问题描述】:

我正在制作一个简单的程序,该程序从用户那里获取 2 个分数,对他的分数进行一些基本的求和,并为用户提供他们的“健身年龄”。问题是,我不能使用来自用户的数据,因为它与计算方法不同。我试图复制这个网站上的其他代码,但我想我可能弄乱了我自己的代码,有什么帮助吗?

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;

    }

}

【问题讨论】:

  • 你为什么要重新声明in?将返回值分配给另一个变量并将其传递给revealAge
  • A void 方法没有返回值,请将返回类型从 void 更改为 int

标签: java methods static-methods


【解决方案1】:

您需要在secondScore()firstScore() 方法中返回int。而且,您的main 方法中的许多变量声明都有一个名称(in)。根据我所说的问题对您的代码进行了一些修改:

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 + ".");

    }

}

【讨论】:

    【解决方案2】:

    你有几个问题:

    • 方法firstScore()secondScore() 都被定义为不返回任何内容(这就是void 在方法定义中所做的) - 根据您使用它们的方式,您可能希望返回int
    • 您试图在main 方法中定义in 两次。您需要以不同的方式命名这些变量。 int firstScoreint secondScore 怎么样?
    • 从您的 main 方法调用 revealAge 应该传递这两个参数,而不仅仅是一个。

    修复这些问题应该有助于您的代码编译。我强烈建议您逐步阅读一些 java 教程,这样您以后会更加明显地看到类似的错误。

    • 尼特:你的格式有点不靠谱。研究格式化 Java 代码的最佳做法。

    【讨论】:

      猜你喜欢
      • 2016-02-17
      • 2022-11-16
      • 1970-01-01
      • 2017-11-30
      • 1970-01-01
      • 2015-11-11
      • 2017-10-21
      • 1970-01-01
      • 2021-10-13
      相关资源
      最近更新 更多