我有一个程序,可以平均从命令行中的数字。一切都在主要方法中。1.该程序应运行,允许您一次输入一个号码,当您按Enter Enter时,请您提供另一个数字,或者提供按Q来获得平均值的功能。2.该程序的限制设置为添加20个数字。当您达到21时,程序会通知您您添加了许多数字并关闭。3.如果您在同一行上输入多个数字,然后按Enter,对于每个数字输入IT System.out.println一次消息一次,而不是一次。
我想了解如何更改程序来完成这些事情。
- 如何获取System.out.println到每个条目仅出现一次。
- 当某人输入21 时,如何使程序平均输出20个
如何更改它以创建一种用于平均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)); }
1。
scan2.hasNextDouble()
正在解析包含多个条目的线路,因此必须在循环中将其删除。您可以使用字符串令牌来解析自己,并仅打印一次消息。
2。只需添加此行:
system.out.println("您的平均值是:" (sum/count));
在返回if条件之前要在退出之前打印平均值。
3。这实际上取决于您想要什么样的功能。可能是您可以创建一个函数,该函数占用数字并打印出平均值,或者您可能想要其他东西。
一个可能的功能:
public double findAverage(ArrayList<Integer> numbers){
int sum=0;
for (Integer i: numbers){
sum+=i;
}
return sum/(double)numbers.size();
}
您可以尝试以下内容:
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
}