示例:
输入
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
}
}
答案 0 :(得分:1)
首先,你需要双打,而不是整数。因此,请声明n1
,n2
以使其类型为double
(您可能还希望将其重命名为d1
,d2
等,由您决定。不要使用keyboard.nextInt()
,而是使用keyboard.nextDouble()
。同时声明average
一个double
。
正如您似乎发现的那样,double
没有substring
方法(事实上它根本没有方法)。而是分别从键盘上读取每个双精度:
double n1 = keyboard.nextDouble();
double n2 = keyboard.nextDouble();
(另外,如果我输入更长的双倍值,如216.9875,你尝试获取子串会失败。)
如果您正在执行我建议的更改,我希望您的程序可以正常运行。
答案 1 :(得分:1)
第一个问题:substring
是String
类中的一个方法。您无法像double
那样在原始数据类型上调用它。
第二个问题:您不需要substring
来查找数字的平均值。 substring
用于从另一个String
String
您只需要找到4个double
值的平均值。以下是如何做到这一点:
obj.nextDouble()
4次输入,并将其分配给四个double
double
s