Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用average方法查找平均值的java程序_Java_Methods_Syntax_Main - Fatal编程技术网

用average方法查找平均值的java程序

用average方法查找平均值的java程序,java,methods,syntax,main,Java,Methods,Syntax,Main,我有一个程序,可以从命令行中平均你的数字。一切都在主方法中。 1.该程序应允许您一次输入一个数字,当您按enter键时,它会要求您输入另一个数字,或提供按Q键获得平均值的功能。 2.该程序将限制设置为添加20个数字。当您点击21时,程序会通知您添加了许多数字并关闭。 3.如果在同一行中输入多个数字,然后按enter键,则输入的每个数字都会在System.out.println中为每个数字显示一次消息,而不是仅显示一次 我想了解如何改变程序来做这些事情 如何使System.out.println在

我有一个程序,可以从命令行中平均你的数字。一切都在主方法中。 1.该程序应允许您一次输入一个数字,当您按enter键时,它会要求您输入另一个数字,或提供按Q键获得平均值的功能。 2.该程序将限制设置为添加20个数字。当您点击21时,程序会通知您添加了许多数字并关闭。 3.如果在同一行中输入多个数字,然后按enter键,则输入的每个数字都会在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));
    }
    
  • 一,

    正在分析包含多个条目的行,因此必须在while循环中删除该行。您可以使用字符串标记化对自己进行解析,并只打印一次消息

    二,。只需添加以下行:

    System.out.println(“您的平均值为:”+(总和/计数))

    返回前,在if条件下打印退出前的平均值

    三,。这取决于你想要什么样的函数。可能您可以创建一个函数,该函数获取一个数字数组并打印出它们的平均值,也可能您需要其他东西

    一个可能的功能:

    public double findAverage(ArrayList<Integer> numbers){
        int sum=0;
        for (Integer i: numbers){
            sum+=i;
        }
        return sum/(double)numbers.size();
    }
    
    public-double-findAverage(数组列表编号){
    整数和=0;
    for(整数i:数字){
    总和+=i;
    }
    返回和/(双)个数字。大小();
    }
    
    您可以尝试以下方法:

    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
    }
    

    我在读关于把数字放入字符串类的书。那么,唯一的方法是存储扫描的平均值方法来获取它们并在调用时对它们进行平均吗?我一直在想一些东西,但似乎无法让它发挥作用。您可以使用BufferedReader读取用户的输入,然后将其存储在字符串中。您可以将字符串标记为字符串数组以获取多个数字。你可以做很多事情,只是去那里做实验。好吧,那么如果我把scanner类找到的数字存储在一个列表数组中呢?然后创建一个方法,从列表数组中获取这些数字并对其进行平均。然后调用该方法代替System.out.println(“您的平均值是:”+(总和/计数))???这合乎逻辑吗?是的,完全合乎逻辑。将它们存储在ArrayList中,然后将列表传递给一个方法,该方法只需迭代、求和并除以ArrayList的大小即可返回平均值。这种方法也符合代码可重用性的要求。
    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
    }