编写一个输入四个双精度的java程序,并在两行输出中显示数字的平均值

时间:2017-03-21 10:11:02

标签: java casting double

示例:

输入

4.0 4.0 4.0 4.0

输出

Average of { 4.0, 4.0, 4.0, 4.0 } is 4.0

我已经提到了this link并且在我自己复制时没有问题,但是我不知道如何在1-2行输出中完成所有操作。我以为会有一行使用扫描仪键盘功能将fourNumbers输入为double,然后是后续的int =(int)fourNumbers - 对于四者中的每一个,但是需要将一个定位到三个字符空格,在输出它们的平均值之前,使用单独的标识符(例如n1,n2,n3,n4)存储四个数字中的每一个。

任何建议都将不胜感激。

我目前的代码如下,但我使用了substring命令/函数时遇到了问题。

import java.util.Scanner;

public class Avg {
    public static void main(String[] args) {
        double numbers;
        Scanner keyboard = new Scanner(System.in);
        numbers = keyboard.nextInt();
        int n1 = (int) numbers.substring(0,3);
        int n2 = (int) numbers.substring(3,6);
        int n3 = (int) numbers.substring(6,9);
        int n4 = (int) numbers.substring(9,12);
        int average = (n1 + n2 + n3 + n4)/4;
        System.out.println("Average of { " + n1 + ", " + n2 + ", "+ n3 + ", "+ n4 + " } is " + average);

        //TODO

    }
}

2 个答案:

答案 0 :(得分:1)

首先,你需要双打,而不是整数。因此,请声明n1n2以使其类型为double(您可能还希望将其重命名为d1d2等,由您决定。不要使用keyboard.nextInt(),而是使用keyboard.nextDouble()。同时声明average一个double

正如您似乎发现的那样,double没有substring方法(事实上它根本没有方法)。而是分别从键盘上读取每个双精度:

    double n1 = keyboard.nextDouble();
    double n2 = keyboard.nextDouble();

(另外,如果我输入更长的双倍值,如216.9875,你尝试获取子串会失败。)

如果您正在执行我建议的更改,我希望您的程序可以正常运行。

答案 1 :(得分:1)

第一个问题substringString类中的一个方法。您无法像double那样在原始数据类型上调用它。

第二个问题:您不需要substring来查找数字的平均值。 substring用于从另一个String

中提取String

您只需要找到4个double值的平均值。以下是如何做到这一点:

  1. 制作扫描程序对象``
  2. 使用obj.nextDouble() 4次输入,并将其分配给四个double
  3. 计算double s
  4. 的平均值
  5. 打印出来