先有雞蛋還是現有雞—Java語言程式設計(基礎篇)學習日記

來源:互聯網
上載者:User

折騰代碼真是個無比耗時的東西啊,不知不覺,十分鐘,二十分鐘,三十分鐘。。。

課後編程題,讓讀入數目不確定的考試分數,並且判斷有多少個分數高於或等於平均分,有多少個分數低於平均分。輸入一個負數標誌輸入結束。假設最高分為100.。。。

先有雞蛋還是先有雞?讓我從生物學角度太好回答了,但是編程的話。。。額。

先初始化一個數組list,數組長度就定了,就不能滿足數目不確定的考試分數了。但是想先輸入分數再初始化數組呢,先輸入的分數又沒處存了,所以,小弟對策是先定義並初始化一個很長的數組,長度n,再根據輸入的分數的數目初始化另一個數組list2,來把有效輸入轉存到新數組。再對新數組進行操作。

PS:前邊,那個n,可以寫很大很大,不管怎麼寫,都是個確定的數,而不是無窮吧,貌似這個數組長度也沒上限吧?

那這就太局限了,只要不是無限,你定義多大的n,總有不夠用的時候,總會有溢出的風險啊。。

PS:如果定義一個很大的數組,再加手動輸入那些成績的話,可能手抽筋也寫不到他溢出的時候,但是這裡討論的是理論,理論上會溢出

不知道有沒有更好的方法,暫時就想這麼多。

我只是一個看書看到第六章並且沒做全練習題的菜鳥,勿鄙視。。。。。。

package java06.ProgramTest;
//課後題4,輸入數目不確定的數組
import javax.swing.JOptionPane;

public class Program_6_4 {
 public static void main(String[] args){
  int n=1000;
  //尷尬啊,想通過計算輸入的成績的總數來給Index賦值,用來初始化數組,但是不初始化數組又沒處存輸入的成績
  int[] myList=new int[n];//我暫時通過一個手動賦值來初始化數組把
  
  int number=0;
  int i=0;
  for(i=0;number>=0;i++){
   String inputString=JOptionPane.showInputDialog("Enter a score. /n"+
     "Negative number to end~!!!/nThe allowable max score is 100.");
   number=Integer.parseInt(inputString); 
   if(number>=0)
    myList[i]=number;
    
  }
  i--;
  System.out.println("Score's amount is "+i);
  
  //直接用原來那個數組有風險,輸入的數量剛好和定義的數組相等固然是好,
  //但是你輸入的不夠n的話,那些0,就全算平均值了,所以要把沒輸入的預設0的都給屏蔽掉
  //這裡我們採用的方法是,在這new一個,把前邊數組的值賦過來
  int[] myList2=new int[i];
  int index=i-1;
  for(int k=0;k<=index;k++){
   myList2[k]=myList[k];
  }
  System.out.println("/nTest:average "+computeAverage(myList)+"一千個數的平均值");
  System.out.println("/naverage"+computeAverage(myList2));
  System.out.println("/nTest: 大於等於平均值: "+
    computeCountAboveAverage(computeAverage(myList),myList)+"一千個數中大於等於平均值的");
  System.out.println("/n大於等於平均值: "+computeCountAboveAverage(computeAverage(myList2),myList2));
  System.out.println("/nTest: 小於平均值: "+
    computeCountBelowAverage(computeAverage(myList),myList)+"一千個數中小於平均值的");
  System.out.println("/n小於平均值: "+computeCountBelowAverage(computeAverage(myList2),myList2));
 
 }
 //計算平均值
 public static double computeAverage(int[] list){
  int sum=0;
  double average=0;
  for(int i=0;i<list.length;i++){
   sum+=list[i];
  }
//  average=sum/list.length;//bug  先Mark了,以後注意
  average=(double)sum/list.length;
  return average;
  
 }
 //計算獲得平均成績以上的成績數目
 public static int computeCountAboveAverage(double average,int[] list){
  int count=0;
  for(int i=0;i<list.length;i++){
   if(list[i]>=average)
    count++;
  }
  return  count;
 }
 //計算獲得平均成績以下的成績數目
 public static int computeCountBelowAverage(double average,int[] list){
  int count=0;  
  for(int i=0;i<list.length;i++){
   if(list[i]<average)
    count++;
  }
  return  count;
 }
 

}

後記。類的執行個體變數和靜態變數稱為類屬變數資料域。定義在方法內部的變數稱為局部變數。不管在何處聲明,類屬變數的範圍是整個類。類屬變數和方法在類中可以按任何順序聲明。

例外:一個資料域需要引用另一個資料域來進行初始化,另一個資料域必須先聲明(嚴格的順序限制,書上有明文規定了)。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.