[轉載] JAVA數組實現學生成績統計

參考鏈接: Java程序的輸出 20(繼承)

一、項目名稱 數組實現學生成績統計 二、項目描述 1.項目簡介: 由用戶輸入學生人數與名字,并定義當前學期課程數與課程名,并分別錄入每位學生每門課程成績,系統顯示輸入每位學生每門課程成績,并顯示學生的總分與平均分。 2.程序要求: 1)程序運行時,顯示歡迎信息,并提示輸入班級學生人數,如圖1。??

2)用戶輸入班級人數后,系統提示用戶輸入本學期課程數,如圖2。?

3)輸入學期課程數后,系統提示用戶定義每門課程名, 如圖3、圖4、圖5。?

?

?

4)所有課程名都定義完成后,系統提示輸入學生姓名。如圖6。 5)錄入一個學生姓名后,提示錄入本學期每門課程的成績。當一個學生所有課程錄入完成后,提示錄入下一個學生姓名,及本學期每門課程成績。如圖7,如圖8,如圖9。? ? 6)所有學生姓名與對應的每個學生本學期每門課程成績錄入完成后,系統顯示打印輸入錄入成績,并統計輸入每位學生的課程總分與平均分。如圖10。 三、說明 本程序不涉及文件數據庫操作,僅利用java數組實現。?

代碼實現:?

package cn.jpi.demo;

?

import java.util.Scanner;

?

import org.junit.Test;

?

public class StudentsScoreStatistics {

//? ? 定義全局變量

? ??

//? ? 班級學生名字(數組)

? ? static String[] studentName;

//? ? 學期課程名(數組)

? ? static String[] courseName;

//? ? 學生成績(二維數組)

? ? static int[][] studentScore;

//? ? 學生總分

? ? static int[] studentScoreSum;

//? ? 學生平均分

? ? static double[] studentScoreAvg;

? ??

//? ? 定義Object二維數組來裝矩形

? ? static Object[][] table;

? ??

//? ? 聲明Scanner對象

? ? static Scanner sc = new Scanner(System.in);

? ??

? ? public static void main(String[] args) {

//? ? ? ? 1.歡迎使用

? ? ? ? welcome();

//? ? ? ? 2.輸入班級人數,課程數,課程名以及每位同學的各門課的成績

? ? ? ? print();

//? ? ? ? 3.打印結果

? ? ? ? end();

? ? }

?

//? ? 4.定義輸出總結果方法

? ? private static void end() {

//? ? ? ? 輸出表頭

? ? ? ? System.out.print("學生"+"\t");

//? ? ? ? 遍歷課程名數組

? ? ? ? for(String s:courseName) {

? ? ? ? ? ? System.out.print(s+"\t");

? ? ? ? }

? ? ? ? System.out.println("總分"+"\t"+"平均分");

//? ? ? ? 二維數組的遍歷

? ? ? ? for(int i = 0;i<table.length;i++) {

? ? ? ? ? ? for(int j = 0;j<table[i].length;j++) {

? ? ? ? ? ? ? ? System.out.print(table[i][j]+"\t");

? ? ? ? ? ? }

? ? ? ? ? ? System.out.println();

? ? ? ? }

? ? }

? ??

//? ? 2.定義輸入班級人數,課程數,課程名以及錄入每位同學的各門課的成績方法

? ? private static void print() {

//? ? ? ? 輸入班級人數(確定學生數組的長度)

? ? ? ? System.out.println("請輸入班級學生人數:");

? ? ? ? int i? = sc.nextInt();

? ? ? ? studentName = new String[i];

? ??????

//? ? ? ? 確定學生總分數組長度

? ? ? ? studentScoreSum = new int[i];

? ??????

//? ? ? ? 確定學生平均分數組長度

? ? ? ? studentScoreAvg = new double[i];

? ??????

//? ? ? ? 輸入學生課程數(確定課程數組的長度)

? ? ? ? System.out.println("請輸入學期課程數:");

? ? ? ? int j? = sc.nextInt();

? ? ? ? courseName = new String[j];

? ??????

//? ? ? ? 確定學生成績數組長度

? ? ? ? studentScore = new int[i][j];

? ??????

//? ? ? ? 確定矩陣大小

? ? ? ? table = new Object[i][j+3];

? ??????

//? ? ? ? 輸入課程名字(循環)

? ? ? ? for(int k = 0;k<courseName.length;k++) {

? ? ? ? ? ? System.out.println("請定義第"+(k+1)+"門課的名字:");

? ? ? ? ? ? courseName[k] = sc.next();

? ? ? ? }

//? ? ? ? 輸入學生的姓名,并錄入他的每門課的成績(循環嵌套)

//? ? ? ? 聲明總分變量

? ? ? ? int sum = 0;

//? ? ? ? 聲明平均分變量

//? ? ? ? double avg = 0;

? ? ? ? for(int l = 0;l<studentName.length;l++) {

? ? ? ? ? ? System.out.println("請輸入第"+(l+1)+"個學生的姓名:");

? ? ? ? ? ? studentName[l] = sc.next();

? ??????????

? ? ? ? ? ? for(int m = 0;m<courseName.length;m++) {

? ? ? ? ? ? ? ? System.out.println("請輸入"+studentName[l]+"同學"+courseName[m]+"的成績:");

? ? ? ? ? ? ? ? studentScore[l][m] = sc.nextInt();

? ? ? ? ? ? ? ? sum = sum + studentScore[l][m];

//? ? ? ? ? ? ? ? avg = sum/courseName.length;

? ? ? ? ? ? }

? ? ? ? ? ? studentScoreSum[l] = sum;

? ? ? ? ? ? studentScoreAvg[l] = sum/courseName.length;

//? ? ? ? ? ? sum歸0,重新計算

? ? ? ? ? ? sum = 0;

//? ? ? ? ? ? System.out.println(sum+"....."+avg);

? ? ? ? }

//? ? ? ? 為 表格填入數據

? ? ? ? for(int n = 0;n<studentName.length;n++) {

? ? ? ? ? ? for(int o = 0;o<courseName.length+3;o++) {

? ? ? ? ? ? ? ? if(o>=1 && o<=courseName.length) {

? ? ? ? ? ? ? ? ? ? table[n][o] = studentScore[n][o-1];

? ? ? ? ? ? ? ? }else if(o==0) {

? ? ? ? ? ? ? ? ? ? table[n][o] = studentName[n];

? ? ? ? ? ? ? ? }else if(o==courseName.length+1){

? ? ? ? ? ? ? ? ? ? table[n][o] = studentScoreSum[n];

? ? ? ? ? ? ? ? }else {

? ? ? ? ? ? ? ? ? ? table[n][o] = studentScoreAvg[n];

? ? ? ? ? ? ? ? }

? ? ? ? ? ? }

? ? ? ? }

? ? }

? ??

//? ? 1.定義打印表頭方法

? ? private static void welcome() {

? ? ? ? System.out.println("歡迎使用簡單不簡約成績統計系統^_^");

? ? }

? ? @Test

? ? public void test() {

?

? ? ? ? }

? ? }

}

?

代碼就不細分了(反正也是給我以后自己看的,嘻嘻) 主要講講做這題的過程中遇到的問題吧 我有在兩個地方卡住:?

?

?一個是在給table賦值的時候,我原本想把賦值放在輸入學生成績的那個循環里面,但是要么是索引越界異常,要么是后面的值賦不上去,為null值,此時我就想到它循環的次數和我要給table賦值的長度是不一樣的。 為解決這一問題,我到外面單獨寫一個循環去給table賦值(這個故事告訴我,不該省的代碼還是老老實實的寫)?

?

?

?另外一個是二維數組的問題,我看到題目要求的結果我就很清楚這里是個二維數組,我也是這么做的,但是!我在前面定義的學生成績的數組它是一維的,而且我是在循環里面給他賦值,也就是說我對一個學生的成績賦值完成,給下一個學生的成績賦值,它就會把第一個學生成績的值給覆蓋掉,導致無論我輸出的結果都與最后一個同學的成績一樣。 為解決這一問題,我把學生成績改為二維數組,再將相應的地方改掉就OK了?

?

在測的時候要把(學生數>課程數,學生數=課程數,學生數<課程數)這幾種情況都測一測,因為有一些細節不注意,它可能會存在索引不存在或者索引越界的問題。?

還有一個小作業就不寫上來了,很容易。?

最后:面向對象面向君,不負代碼不負卿。各位加油

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/540258.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/540258.shtml
英文地址,請注明出處:http://en.pswp.cn/news/540258.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

建立同步文件的腳本

為避免一個一個的去修改每一個服務器的配置文件&#xff0c;只需要rsync同步一下就可以搞定#!/bin/bash#rsync.shLOCAL_DIR"/opt/admin"test -n "$hosts" || hosts"xxxx xxxx"REMOTE_DIR"/opt/"RSYNC_LOG"/opt/var/log/rsync.log…

[轉載] Java三元運算符示例

參考鏈接&#xff1a; Java中的運算符 本示例說明如何編寫Java三元運算符。 這是語法 condition ? get_this_if_true : get_this_if_false Java三元運算符語法 (n > 18) ? true : false; (n true) ? 1 : 0; (n null) ? n.getValue() : 0; 1. Java三元運算符 …

shell下的進度條和最大最小平均值

進度條 C語言下的進度條參考我原來的一篇blog->進度條 1234567891011121314151617181920212223function proc() {i0 str arr(| / - \\) index0 while [ $i -le 100 ] do printf "[%-101s][%d%%][%c]\r" "$str" "$i" "${arr[$index]}&qu…

[轉載] 你真的會用 Java 中的三目運算符嗎

參考鏈接&#xff1a; Java中的按位運算符 轉載:http://blog.jobbole.com/93511/ 寫在前面&#xff1a; 三目運算符是我們經常在代碼中使用的&#xff0c;a (bnull?0:1); 這樣一行代碼可以代替一個 if-else&#xff0c;可以使代碼變得清爽易讀。但是&#xff0c;三目運算符也…

HTTP Keep-Alive模式

1、什么是Keep-Alive模式&#xff1f; 我們知道HTTP協議采用“請求-應答”模式&#xff0c;當使用普通模式&#xff0c;即非KeepAlive模式時&#xff0c;每個請求/應答客戶和服務器都要新建一個連接&#xff0c;完成 之后立即斷開連接&#xff08;HTTP協議為無連接的協議&#…

[轉載] java:比較運算符

參考鏈接&#xff1a; Java中的new運算符 1.compareTo()方法: compareTo()方法返回的是一個int類型值. //聲明的值 BigDecimal t_sell1 new BigDecimal(); BigDecimal t_sell2 new BigDecimal(); if(t_sell1.compareTo(t_sell2)0){ return "t_sell1的值等于t_sell2&…

[轉載] java左移右移和無符號右移

參考鏈接&#xff1a; Java中的按位右移運算符 ###知識點 java的三種位移運算符&#xff1a; <<&#xff1a;左移運算符&#xff0c;num << 1,相當于num乘以2 >>&#xff1a;右移運算符&#xff0c;num >> 1,相當于num除以2 >>>&#xff1a…

Script:List OBJECT DEPENDENT

以下腳本用以列出數據庫中對象的依賴性:select D_OBJ#, 本文轉自maclean_007 51CTO博客&#xff0c;原文鏈接: http://blog.51cto.com/maclean/1276767

[轉載] java避免空指針異常_第1部分:在現代Java應用程序中避免空指針異常

參考鏈接&#xff1a; Java的instanceof及其應用 java避免空指針異常 空做與不做 (Null do’s and don’ts) In the talk Null References: The Billion Dollar Mistake, Sir Tony Hoare describes implementing null references as a part of the ALGOL programming languag…

[轉載] 什么是Java中的自動拆裝箱 integer

參考鏈接&#xff1a; Java中autoboxing自動裝箱整數對象的比較 本文主要介紹Java中的自動拆箱與自動裝箱的有關知識。 1、基本數據類型 基本類型&#xff0c;或者叫做內置類型&#xff0c;是Java中不同于類(Class)的特殊類型。它們是我們編程中使用最頻繁的類型。 Jav…

[轉載] python常用庫

參考鏈接&#xff1a; Python–新一代語言 轉載至&#xff1a;https://www.cnblogs.com/jiangchunsheng/p/9275881.html 今天我將介紹20個屬于我常用工具的Python庫&#xff0c;我相信你看完之后也會覺得離不開它們。他們是&#xff1a; Requests.Kenneth Reitz寫的最富盛…

linux下安裝配置oracle

檢查系統是否已安裝所需的開發包 使用rpm -qa命令&#xff0c;確保以下包已成功安裝。對于包的版本,只有版本高于下面的都可以,如果低于此版本,則要升級處理,如下: binutils-2.15.92.0.2-13.EL4 compat-db-4.1.25-9 compat-libstdc-296-2.96-132.7.2 control-center-2.8.0-12 g…

[轉載] c++多態與java多態性_Java中的多態性

參考鏈接&#xff1a; Java中的加法和串聯 c多態與java多態性 Polymorphism is one of the core concepts of OOPS paradigm. The meaning of polymorphism is the condition of occurring in several different forms. 多態是OOPS范式的核心概念之一。 多態性的含義是以幾種不…

USB peripherals can turn against their users

Turning USB peripherals into BadUSB USB devices are connected to – and in many cases even built into – virtually all computers. The interface standard conquered the world over the past two decades thanks to its versatility: Almost any computer peripheral…

[轉載] JAVA條件表達式的陷阱

參考鏈接&#xff1a; Java條件表達式中的數字類型提升 Map<String, Integer> map new HashMap<String, Integer>(); map.put("count", null); Integer it map null ? 0 : map.get("count"); 注意&#xff1a;在第三行&#xff0c;會…

Linux系統管理初步(七)系統服務管理、chkconfig與systemd 編輯中

Linux系統本身包含了很多服務&#xff0c;CentOS6之前系統的服務用SysV控制&#xff0c;CentOS7改為systemd控制 一、chkconfig服務管理機制 簡而言之&#xff0c;chkconfig就是CentOS6以前用來控制系統服務的工具&#xff0c; 常用方法舉例 chkconfig --list #列出所有的系統服…

[轉載] 菜鳥舉例理解字節流和字符流區別

參考鏈接&#xff1a; Java中的字符流與字節流 Character Stream對比Byte Stream 菜鳥舉例理解字節流和字符流區別 按照uft8編碼方式存儲文檔 文檔存儲路徑在D盤下 /** * 按照utf8格式存儲文檔 */ public static void storeDataByUTF8(){ String path "D:" …

[轉載] Java9發布回顧Java 8的十大新特性

參考鏈接&#xff1a; Java中的DoubleStream mapToObj() java9已經在北京時間9月22日正式發布&#xff0c;開發者可以在oracle jdk官網上下載到最新的jdk9。 今天&#xff0c;我們先來一起復習一下2014年發布的Java 8的十大新特性。先來喝杯java~~~ 按照java升級的傳統&…

窗體間傳遞數據

前言 做項目的時候&#xff0c;winfrom因為沒有B/S的緩存機制&#xff0c;窗體間傳遞數據沒有B/S頁面傳遞數據那么方便&#xff0c;今天我們就說下winfrom中窗體傳值的幾種方式。 共有字段傳遞 共有字段傳遞實現起來很方便&#xff0c;就是在窗體類中加個共有字段屬性&#xff…

[轉載] c語言中檢查命令行參數_C中的命令行參數

參考鏈接&#xff1a; Java中的命令行參數 c語言中檢查命令行參數 Command line argument is a parameter supplied to the program when it is invoked. Command line argument is an important concept in C programming. It is mostly used when you need to control your …