【问题标题】:Calculate average with user inputs and different methods使用用户输入和不同方法计算平均值
【发布时间】:2016-06-24 19:47:35
【问题描述】:

所以,我的作业是编写一个程序,提示用户在一行上输入 5 到 10 个数字,用空格分隔,计算这些数字的平均值,并将这些数字及其平均值显示给用户。

第一个方法应该不带参数并返回一个由空格分隔的数字字符串。

第二种方法应该接受一个字符串作为它的唯一参数并返回一个双精度值(平均值)。

第三个方法应该接受一个 String 和一个 double 作为参数,但没有返回值。


我的问题是我不知道如何以不同的方法计算平均值以及打印我的结果。我刚刚学会了方法,所以我还在努力弄明白。

这是我目前所拥有的,我知道我有错误:

import java.util.Scanner;
public class CalculateAvg {

    public static void main(String[] args) {
        String userinput = getuserinput();
    }


    public static String getuserinput() {
        // Read inputs and change string to double
        Scanner in = new Scanner(System.in);
        String userinput;

        System.out.println("Please enter 5 to 10 numbers seperated by spaces: ");
        userinput = in.nextLine();
        double numbs = Double.parseDouble(userinput);
        return userinput;
    }
    // Problem is here. 
    public static double mySum(String sum, String userinput) {
        double avg = 0;
        double count = 0;

        double value = Double.parseDouble(sum);
        sum = sum + userinput;
        count++;
        avg = sum / count;

        return avg;
    }
}    

【问题讨论】:

  • "... I have errors." -- 什么错误?请尝试提出更完整的问题。
  • 平均=总和/计数;给我一个错误。

标签: java methods arguments average static-methods


【解决方案1】:

因为这是家庭作业,所以我不会给你代码,而是为你指明正确的方向。

首先,请按照说明进行操作。第一种方法应该只是获取用户输入;没有其他的。所以,不要在那里做任何其他事情。无论如何,一旦方法返回,您将无法使用它。

第二种方法应该只有一个参数;那就不要用两个了。将用户输入发送到该方法并获得平均值。要获得平均值,您需要输入数字的总和和计数。但是你有一个String。因此,您需要将该字符串拆分为单独的数字并将它们解析为数字类型,将它们相加,然后除以拆分输入后获得的计数。

我假设第三种方法将采用用户输入和计算的 double 并以干净的方式显示它们。

这些任务中的每一个都应该是单独的方法,因此它类似于这样:

input = getInput()
average = getAverage(input)
displayResults(input, average)

【讨论】:

  • String[] result = userinput.split(" "); double numbs = Double.parseDouble(userinput); 我添加了字符串拆分和双精度解析,但出现错误:线程“main”中的异常 java.lang.NumberFormatException:对于输入字符串:“5 4”在 sun .misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:2043) at sun.misc.FloatingDecimal.parseDouble(FloatingDecimal.java:110) at java.lang.Double.parseDouble(Double.java:538) at calculateavg.CalculateAvg.getAverage( CalculateAvg.java:39) 在calculateavg.CalculateAvg.main(CalculateAvg.java:19)
  • @Olive,想想错误的含义和用户输入是什么。输入仍然是空格分隔的数字。结果数组是需要解析为双精度并加在一起的单个数字。因此,您可以添加一个循环并遍历该数组中的每个循环,并将解析后的值添加到初始化为 0 的 sum 变量中。然后您得到总和,结果数组的大小就是输入的数字数。
【解决方案2】:

如果您希望获得准确的代码,那么我不会给您。

我认为要获取 5 到 10 个参数,我认为您可以创建一个数组,创建一个 for 循环( in.nextInt() 将获取输入)并在 if 语句中的循环内创建一个 break 语句。

If 语句将检查在哪里停止(放置一些不会在数组中的数字并标记为参数的结尾)。

当您将它们作为 int 获取时可以使用它。

如果您想将整行读取为一个,则将行字符串保存在 str (或其他内容)中。

String[] nums = str.split(" ");

该语句将把所有数字存储在字符串数组中。

要获取数字,请使用 for 循环和 Double.parseDouble( nums[ i ] ) 。

现在,如果您急于用不同的方法来做这些事情,那么只需使用全局变量。

我认为这么多帮助可能会帮助您完成工作。

【讨论】:

  • 我会从您的答案中删除有关如何实现它的替代方法;他们有要求,并且不包括在具有终止值或使用全局变量的循环中从用户那里获取单个数字作为ints。
  • 所以只需使用 in.next() 读取整行作为输入,然后按照说明尝试其余部分。在开始编程时会害怕,但不要害怕。我们随时为您提供帮助。
  • 我不是 OP。我只是提出一个建议,因为他们可能无法使用这些建议,因为它们违反了作业要求。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多