我有一个程序可以从命令行平均你的数字。一切都在主要方法中。 1.程序应该运行,允许您一次输入一个数字,当您按Enter键时,它会询问您是否有另一个号码,或者提供按Q来获得平均值的功能。 2.程序的限制设置为添加了20个数字。点击21时,程序会通知您添加了多个号码并关闭。 3.如果您在同一行输入多个数字并按Enter键,则为您输入的每个数字System.out.println为每个数字输入一次,而不是仅输入一次。
我想了解如何更改程序来执行这些操作。
如何更改它以创建一个在main之外进行平均的方法,然后调用main中的平均方法。
import java.util.Scanner;
class programTwo {
public static void main (String[] args) {
Scanner scan = new Scanner(System.in);
double sum = 0;
int count = 0;
System.out.println ("Enter your numbers to be averaged:");
String inputs = scan.nextLine();
while (!inputs.contains("q")) {
Scanner scan2 = new Scanner(inputs); // create a new scanner out of our single line of input
while(scan2.hasNextDouble()) {
sum += scan2.nextDouble();
count += 1;
System.out.println("Please enter another number or press Q for your average");
}
if(count == 21)
{
System.out.println("You entered too many numbers! Fail.");
return;
}
inputs = scan.nextLine();
}
System.out.println("Your average is: " + (sum/count));
}
答案 0 :(得分:1)
1
scan2.hasNextDouble()
正在解析包含多个条目的行,因此必须在while循环中删除它。您可以使用字符串标记化解析自己并仅打印一次消息。
2。只需添加以下行:
System.out.println(“你的平均值是:”+(总和/数));
返回之前if条件打印退出前的平均值。
3。这真的取决于你想要什么样的功能。也许你可以创建一个函数,它接受一组数字并打印出它们的平均值,或者你想要别的东西。
一个可能的功能:
public double findAverage(ArrayList<Integer> numbers){
int sum=0;
for (Integer i: numbers){
sum+=i;
}
return sum/(double)numbers.size();
}
答案 1 :(得分:0)
您可以尝试以下操作:
public static void main(String[] args){
if(args.length==20)
{
int sum=0;
sum += Integer.parseInt(args[0]); //do this for 20 array elements using loop
// do required calculation
}
else //print error message
}