1. 程式人生 > 實用技巧 >JAVA學習日報 8.17

JAVA學習日報 8.17

學生管理系統,怎麼說呢,還是沒做完,有幾個問題需要解決一下。

主要問題集中在null的使用,和輸入類(Scanner)的使用,都是各種報錯,看來還是要再研究一下

話雖如此,鴿了2天的程式碼也不能說不給就不給,這是目前比較好的版本:

package test5;

import java.util.Scanner;

class student 
{
    public String name="不明";
    public String code="不明";
    public double math=0,chinese=0,english=0,bio=0,fullscore=0;
    public
student next=null; public student() {} public student(String a,String f,double b,double c,double d,double e){ name=a;code=f;math=b;chinese=c;english=d;bio=e; fullscore=b+c+d+e; } public void showme() { System.out.print("目標學號:"+code+"\n"); System.out.print(
"目標姓名:"+name+"\n"); System.out.print("數學成績:"+math+"\n"); System.out.print("語文成績:"+chinese+"\n"); System.out.print("英語成績:"+english+"\n"); System.out.print("生物成績:"+bio+"\n"); System.out.print("總分:"+fullscore+"\n"); } }; class namelist extends
student { public student headNode; public student position; public namelist(String a,String f,double b,double c,double d,double e) { headNode=new student(a,f,b,c,d,e); position=headNode; position.next=new student(a,f,b,c,d,e); position=position.next; position.next=null; position=headNode.next; } public namelist(){} public int getSize() { int count=0; student p=headNode; while (p.next!=null) { p=p.next; count++; } return count; } public void showall() { student p=headNode; for(int i=0;i<=getSize();i++) { System.out.print(p.code+" "+p.name+" "+p.math+" "+p.chinese+" "+p.english+" "+p.bio+" "+p.fullscore+"\n"); p=p.next; } } public void setstudent(int n) { Scanner input=new Scanner(System.in); student p=headNode; String a,b; double c,d,e,f; for(int i=1;i<=n;i++) { System.out.print("請輸入第"+i+"個學生的資訊:\n"); System.out.print("學號:"); a=input.next(); System.out.print("姓名:"); b=input.next(); System.out.print("數學成績:"); c=input.nextInt(); System.out.print("語文成績:"); d=input.nextInt(); System.out.print("英語成績:"); e=input.nextInt(); System.out.print("生物成績:"); f=input.nextInt(); p=new student(b,a,c,d,e,f); p=p.next; } System.out.print("錄入完成\n"); input.close(); } public boolean ssn(String n) { position=headNode.next; for(;position!=null;position=position.next) /*遍歷節點*/ { if(position.name==n) { return true; /*返回值便於if等函式判定條件*/ } } return false; } public boolean ssc(String n) { position=headNode.next; for(;position!=null;position=position.next) { if(position.code==n) { return true; } } return false; } public void cuika() { Scanner input11=new Scanner(System.in); student p=headNode; String a,b; double d,e,f,c; System.out.print("請輸入此學生的資訊:\n"); System.out.print("學號:"); a=input11.next(); System.out.print("姓名:"); b=input11.next(); System.out.print("數學成績:"); c=input11.nextInt(); System.out.print("語文成績:"); d=input11.nextInt(); System.out.print("英語成績:"); e=input11.nextInt(); System.out.print("生物成績:"); f=input11.nextInt(); for(;p.next!=null;){p=p.next;} p.next=new student(b,a,c,d,e,f); System.out.print("錄入完成\n"); input11.close(); } }; public class Classnext { public static void main(String[] args) { int sel,doki; System.out.print("歡迎來到學生成績管理系統,請選擇您想要的操作:\n"); namelist ti=new namelist(); for(int pooi=0;pooi==0;){ Scanner input1=new Scanner(System.in); System.out.print("1 建立\n"); System.out.print("2 新增\n"); System.out.print("3 彙總\n"); System.out.print("4 排序\n"); System.out.print("5 查詢\n"); System.out.print("6 顯示\n"); System.out.print("7 退出\n"); sel=input1.nextInt(); if(sel==1) { System.out.print("請問想要輸入幾位學生的名單呢?\n"); int c; c=input1.nextInt(); ti.setstudent(c); } else if(sel==2) { ti.cuika(); } else if(sel==3) { double k=0; int c=0; System.out.print("已錄入學生的平均成績(總分)如下\n"); student p=ti.headNode; for(;p.next!=null;p=p.next) /*遍歷全部結點*/ { k=k+p.fullscore; c++; } System.out.print(k/c+"\n"); } else if(sel==4) { student o; student p=ti.headNode; for(int i=0;i<=ti.getSize();i++) { for(int c=0;c<=ti.getSize();c++) { o=p.next; if(p.fullscore<o.fullscore) { p.next=o.next; o.next=p; /*若o大於p,交換p和o的位置*/ } } } System.out.print("排序完成!\n"); } else if(sel==5) { String poi; int ll=0; System.out.print("請問您想用什麼方式查詢資訊?\n"); System.out.print("1 學號\n"); System.out.print("2 姓名\n"); doki=input1.nextInt(); student p=ti.headNode; switch(doki) { case 1: System.out.print("請輸入待查詢學號\n"); poi=input1.next(); for(;p.next!=null;p=p.next) { if(p.code==poi) { p.showme(); ll++; } } System.out.print("檢索完成,共檢索到以上"+ll+"條符合條件的物件\n"); break; case 2: System.out.print("請輸入待查詢姓名\n"); poi=input1.next(); for(;p.next!=null;p=p.next) { if(p.name==poi) { p.showme(); ll++; } } System.out.print("檢索完成,共檢索到以上"+ll+"條符合條件的物件\n"); } } else if(sel==6) { System.out.print("正在按照學號 姓名 數學 語文 英語 生物 總分的格式輸出名單\n"); ti.showall(); } else if(sel==7) { System.out.print("正在準備退出……\n"); System.out.print("感謝您的使用\n"); pooi=2; } System.out.print("您的操作已經完成\n"); input1.close(); } } }

執行時會如下報錯:

可以看到是可以錄入但迴圈之後Scanner就會報錯

輸出名單在getsize()方法處報錯。其他的問題都大同小異。

另外,雖然我認為不能有什麼人關心咱的身體狀況,但如果真的有人看了前兩天的隨筆能有那麼一點點擔心的話,我就在此感謝了