查找平均值,最小值,最大值和范围
我是一名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);
}}}}
试试这个,它收集所有输入双打,并与他们合作:
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");
}
}
}
你不应该回答作业问题,只指导提问者。如果海报不能自己弄清楚,并通过计算器获得学位,这将毫无价值,他将无法通过任何技术性采访。 –
@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");
}
}
你不应该回答作业问题,只指导提问者。如果海报不能自己弄清楚,并通过计算器获得学位,这将毫无价值,他将无法通过任何技术性采访。 –
非常感谢你。提供的其他代码是有帮助的,但我们在我的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");
}
}
你不应该回答作业问题,只指导提问者。如果海报不能自己弄清楚,并通过计算器获得学位,这将毫无价值,他将无法通过任何技术性采访。 –
@Tony BenBrahim,没错。但在我看来,OP做了一些努力。下次我会谨慎行事。谢谢! – alainlompo
感谢您的代码,即使我拥有大部分代码,它总能帮助您从有经验的程序员那里读取代码! –
看一看用于文档[nextDouble()](http://docs.oracle.com /javase/7/docs/api/java/util/Scanner.html#nextDouble%28%29)。 –