我的作业要求我提示用户输入5到10个数字,然后计算这些数字的平均值。我还必须使用方法来这样做。我的问题是,如果我不确定他们是否会输入5或10个数字,我如何让程序计算平均值?下面是我到目前为止,我也很难理解如何在main方法中执行方法,但我认为我有正确的方法思路。提前致谢!
修改:
有人建议我格式化如下所示,但我的问题是它在用户输入数字后没有打印任何内容,任何人都能看到我错过的内容吗?我想也许我在main方法中做错了什么?
public class AverageWithMethods {
public static void main(String[] args) {
String userNumbers = getUserNums();
double average = userNumAvg(userNumbers);
printAverage(0, userNumbers);
}
public static String getUserNums() {
Scanner in = new Scanner(System.in);
String userNumInput = "";
System.out.print("Please enter five to ten numbers separated by spaces: ");
userNumInput = in.nextLine();
return userNumInput;
}
public static double userNumAvg(String userNumInput) {
Scanner in = new Scanner(System.in);
Scanner line = new Scanner(in.nextLine());
double count = 0;
double average = 0.0;
double sum =0;
while (in.hasNextDouble()) {
count++;
sum = line.nextDouble();
}
if (count != 0) {
average = sum / count;
count = Double.parseDouble(userNumInput);
}
return average;
}
public static void printAverage(double average, String userNumInput) {
System.out.printf("The average of the numbers " + userNumInput + " is %.2f", average);
}
}
答案 0 :(得分:1)
计算字符串中有多少个空格。您可以通过循环和检查char值来执行此操作,也可以对字符串执行替换并比较新String的大小
e.g。
String fiveNums = "1 2 3 4 5";
String noSpaces = fiveNums.replace(" ", "");
System.out.println(fiveNums.length() - noSpaces.length());
答案 1 :(得分:0)
从您的第一部分代码开始,我假设所有数字都是一次性输入一行。
我的问题是,如果我不确定他们是否会输入5或10个数字,我该如何让程序计算平均值?
您使用的Scanner
对象有一个方法hasNextInt()
,因此您可以构建一个简单的while
循环来计算出有多少个数字。
Scanner line = new Scanner(in.nextLine()); // Feed line into scanner
int numbers = 0;
double total = 0.0;
while(in.hasNextInt()) { // read all the numbers
numbers++;
total += line.nextDouble();
}
line.close(); // Good habit
然后,您可以使用以下所有信息计算平均值:
double avg = total/numbers;
备注:强>
在计算平均值时,将total
设为double以避免整数运算。显然有其他方法可以避免整数数学,如果你愿意,我可以加入更多。
我使用Scanner
参数String
的第二个in.nextLine()
,因为如果跳过该步骤,则在读取连续输入流时代码不会终止例如控制台/终端。这是因为终端仍然接受输入,因此可能存在下一个int。
答案 2 :(得分:0)
当您想了解输入用户的数量时,您可以:
String[] userNumInput = in.nextLine().split(" ");
int quantity = userNumInput.length;
用户输入quantity
个数字。
以下是您原始代码的可能方法之一:
import java.util.Scanner;
public class GetAverage {
public GetAverage() {
String getStr = getUserNums();
double result = userAvg(getStr);
printAverage(result, getStr);
}
public String getUserNums() {
Scanner in = new Scanner(System.in);
System.out.println("Please enter five to ten numbers separated by spaces: ");
return in.nextLine();
}
public static double userAvg(String str) {
String[] arr = str.split(" ");
double sum = 0.0;
double average = 0.0;
for (int i = 0; i < arr.length; i++) {
sum += Integer.parseInt(arr[i]);
}
if (arr.length > 0) {
average = sum / arr.length;
}
return average; // how do I get the program to count what to divide by since user can input 5- 10?
}
public static void printAverage(double average, String userNumInput) {
System.out.printf("The average of the numbers " + userNumInput + "is %.2f", average);
}
public static void main(String[] args) {
new GetAverage();
}
}
<强>输出:强>
Please enter five to ten numbers separated by spaces:
5 7 8 9 6 3 2 4
The average of the numbers 5 7 8 9 6 3 2 4is 5.50