2015-04-29 238 views
1

我是一名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)。 –

回答

0

試試這個,它收集所有輸入雙打,並與他們合作:

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是的,我認爲你明白了。謝謝你的「譴責」。我會更加關注它。 –

1
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類中已經達到了數組,所以這是最有意義的。 –

0

我有類似@ 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

感謝您的代碼,即使我擁有大部分代碼,它總能幫助您從有經驗的程序員那裏讀取代碼! –

相關問題