查找平均值,最小值,最大值和范围

问题描述:

我是一名Java初学者,被我的任务停下来编写一个代码,可以找到输入的平均值,最小值,最大值和范围。这是我的所有代码,并没有完成。平均出来很好,但我写的最低和最高不读。任何人都可以帮助我将最小和最大连接到我的输入?查找平均值,最小值,最大值和范围

package averages; 
import java.util.Scanner; 

public class Averages { 

public static void main(String[] args) { 
    //initialize variables 
    double sum =0; 
    int count = 0; 
    double grade =0; 
    //initialize scanner and input 
    System.out.print("Enter Grades, enter -1 to end the set:"); 
    Scanner in = new Scanner (System.in); 
    //Process data until sentinel is entered 
    while (grade != -1) 
    { 
     grade = in.nextDouble(); 
     if (grade != -1) 
     { 
      sum = sum + grade; 
      count++; 
     } 
    } 
    // Finding the average 
    if(count > 0) 
    { 
     double average = sum/ count; 
     System.out.println("Grade Average: "+average); 
    } 
    else 
    { 
     System.out.println("No Data"); 
    } 
    //Finding largest grade 
    double largest = in.nextDouble(); 
    while(in.hasNextDouble()) 
    { 
     double input = in.nextDouble(); 
     if(input > largest) 
     { 
      largest = input; 
     } 
     System.out.println(largest); 
    //Finding smallest grade  
    double smallest = in.nextDouble(); 
    while (in.hasNextDouble()) 
    { 
     double input1 = in.nextDouble(); 
     if(input1 < smallest) 
     { 
      smallest = input; 

     } 
     System.out.println(smallest); 
    }}}} 
+0

看一看用于文档[nextDouble()](http://docs.oracle.com /javase/7/docs/api/java/util/Scanner.html#nextDouble%28%29)。 –

试试这个,它收集所有输入双打,并与他们合作:

import java.util.ArrayList; 
import java.util.Scanner; 

public class Averages { 

public static void main(String[] args) { 
    //initialize variables 
    double sum =0; 
    double grade =0; 
    double min = 0; 
    double max = 0; 
    //initialize scanner and input 
    System.out.print("Enter Grades, enter -1 to end the set:"); 
    Scanner in = new Scanner (System.in); 
    //Process data until sentinel is entered 
    ArrayList<Double> list = new ArrayList<Double>(); 

    while (grade != -1) 
    { 
     grade = in.nextDouble(); 
     if (grade != -1) 
     { 
      list.add(grade); 
     } 
    } 
    // Finding the average 
    if(!list.isEmpty()) 
    { 
     max = list.get(0); 
     min = list.get(0); 
     for(double i : list){ 
      if(i>max) max = i; 
      if(i<min) min = i; 
      sum += i; 
     } 
     System.out.println("Avarage:"+sum/list.size()); 
     System.out.println("Max:"+max); 
     System.out.println("Min"+min); 
    } 
    else 
    { 
     System.out.println("No Data"); 
    } 
} 

}

+0

你不应该回答作业问题,只指导提问者。如果海报不能自己弄清楚,并通过计算器获得学位,这将毫无价值,他将无法通过任何技术性采访。 –

+0

@TonyBenBrahim是的,我认为你明白了。谢谢你的“谴责”。我会更加关注它。 –

public static void main(String args[]) { 

    //initialize variables 
    double sum = 0; 
    int count = 0; 
    double grade = 0; 
    double largest = Double.MIN_VALUE; 
    double smallest = Double.MAX_VALUE; 
    //initialize scanner and input 
    System.out.print("Enter Grades, enter -1 to end the set:"); 
    Scanner in = new Scanner(System.in); 
    //Process data until sentinel is entered 
    while (grade != -1) { 
     grade = in.nextDouble(); 
     if (grade != -1) { 
      sum = sum + grade; 
      if (grade > largest) { 
       largest = grade; 
      } 
      if (grade < smallest) { 
       smallest = grade; 
      } 

      count++; 
     } 
    } 
    // Finding the average 
    if (count > 0) { 
     double average = sum/count; 
     System.out.println("Grade Average: " + average); 
     System.out.println("Max Grade: " + largest); 
     System.out.println("Min Grade: " + smallest); 
    } else { 
     System.out.println("No Data"); 
    } 
} 
+0

你不应该回答作业问题,只指导提问者。如果海报不能自己弄清楚,并通过计算器获得学位,这将毫无价值,他将无法通过任何技术性采访。 –

+0

非常感谢你。提供的其他代码是有帮助的,但我们在我的java类中已经达到了数组,所以这是最有意义的。 –

我有类似@ m.cekiera的解决方案。我用一个列表,但在单独的方法

public static double average(List<Double> datas) { 
    double sum = 0.0D; 
    for (double d:datas) { 
     sum += d; 
    } 
    return sum/datas.size(); 
} 

public static double min(List<Double> datas) { 
    double min = datas.get(0); 
    for (int i = 1; i < datas.size(); i++) { 
     if (datas.get(i) < min) { 
      min = datas.get(i); 
     } 
    } 

    return min; 
} 

public static double max(List<Double> datas) { 
    double max = datas.get(0); 
    for (int i = 1; i < datas.size(); i++) { 
     if (datas.get(i) > max) { 
      max = datas.get(i); 
     } 
    } 
    return max; 
} 

然后主方法被简化

public static void main(String[] args) { 
    //initialize variables 
    double sum =0; 
    int count = 0; 
    double grade =0; 
    //initialize scanner and input 
    System.out.print("Enter Grades, enter -1 to end the set:"); 
    Scanner in = new Scanner (System.in); 
    List<Double> datas = new ArrayList<Double>(); 
    // Collect all the datas and use sentinel to mark the end 
    //Process data until sentinel is entered 
    while (grade != -1) 
    { 
     grade = in.nextDouble(); 
     if (grade != -1) 
     { 
      datas.add(grade); 
      // sum = sum + grade; 
      // count++; 
     } 
    } 
    // Finding the average, the min and the max 
    if(datas.size() > 0) 
    { 
     double average = sum/ datas.size(); 
     double min = min(datas); 
     double max = max(datas); 
     average = average(datas); 
     System.out.println("Grade Average: "+average); 
     System.out.println("Min: " + min); 
     System.out.println("Max: " + max); 
    } 
    else 
    { 
     System.out.println("No Data"); 
    } 



} 
+0

你不应该回答作业问题,只指导提问者。如果海报不能自己弄清楚,并通过计算器获得学位,这将毫无价值,他将无法通过任何技术性采访。 –

+0

@Tony BenBrahim,没错。但在我看来,OP做了一些努力。下次我会谨慎行事。谢谢! – alainlompo

+0

感谢您的代码,即使我拥有大部分代码,它总能帮助您从有经验的程序员那里读取代码! –