当前位置:编程学习 > JAVA >>

用Java编写

1. 将所有学生的课程成绩保留在一个二维数组中,每一行代表一个学生的成绩,每一列代表一门课程的成绩;将每门课程的名称保留在一个一维数组中(课程的下标序号与二维数组的列号匹配);将每个学生的姓名保留在一个一维数组中(学生的下标序号与二维数组的行号匹配);要求编写程序实现成绩的查询,要求程序运行时从命令行输入统计命令及参数,程序则输出结果,例如:

AVGCOU corejava:统计课程corejava的平均分。

AVGSTU 张三:统计学生张三的平均分。

SORT sum:列出总分的排序。

SORT corejava:列出corejava课程的成绩的排序。

SUM 张三:统计学生张三的总分。

GET 张三 corejava:统计张三的corejava课程的成绩。

BREAK : 退出。

追问:java.io 通过数据流、序列化和文件系统提供系统输入和输出

这个我还是查API知道的

刚学没多长时间了还

我现在用简单的Scanner做出来了

不过谢谢了

答案:我试着写了一下,功能还不完善;照我看来这个小项目完全可以进行简单数据库编写,你可以下去仔细琢磨,我由于时间问题就不把功能一一做出来,不过我相信你看了我的代码,自己一定会写出来剩下的那部分。好好对待,什么都怕钻研,只要肯钻研,臭皮匠也能给诸葛亮当师傅。祝你愉快,以下代码没有做异常捕获,你自己做,不会再问我。

package dazzleCN.jyz.calc;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

import sun.security.x509.AVA;

public class Test {

 /**
  * @param args
  * @throws IOException
  */
 public static void main(String[] args) throws IOException {
  String studentName[] = { "zhangsan", "lisi" };   // 定义一个表示学生姓名的一维数组
  String subjectName[] = { "chinese", "math", "english" };// 定义一个表示课程民称的一维数组
  int score[][] = { { 90, 91, 93 }, { 81, 81, 84 } };  // 定义一个表示学生课程成绩的二维数组
  /*-------这上边是一些预定义变量,下边为读取控制台输入-------------*/
  System.out.println("程序支持的查询的关键字有--------avgcou(平均)、sum(求和),只支持关键字全大写或全小写");
                //这里更具你程序的扩大可以适当增加
  InputStreamReader streamReader = new InputStreamReader(System.in);
                // 获取输入流
  BufferedReader bufferedReader = new BufferedReader(streamReader);
                // 得到一个读取器
  String inputContent = "";        // 定义一个表示输入内容的字符串
  /*-------------这里开始把控制台输入内容进行判断计算,也就是主题算法-------------*/
  while ((inputContent = bufferedReader.readLine()) != null) {
                // 判断读取器读取下一行是否为空
   System.out.println("您的输入内容为--->" + inputContent);
                //提示用户语句
   if (inputContent.lastIndexOf("AVGCOU") != -1 || inputContent.lastIndexOf("avgcou") != -1) {
                //如果方法为平均则开始下边计算
    String studentNameOrsubjectName = inputContent.substring(6);
                //截取avgcou后边的内容
    studentNameOrsubjectName = studentNameOrsubjectName.trim();
                //去除空格
    System.out.println("您要查询的学生或课程为---->" 
      + studentNameOrsubjectName);   //用户提示信息
    for (int i = 0; i < studentName.length; i++) { // 同下
     if (studentName[i].equals(studentNameOrsubjectName)) {
                // 判断程序使用者是不是要查询学生
      double avgScore = avgArray(score[i]); // 这里把第i个学生的成绩传入计算方法
      System.out.println("您要查询的学生平均分为---->" + avgScore);
     }
    }
    for (int i = 0; i < subjectName.length; i++) { // 同下
     if (subjectName[i].equals(studentNameOrsubjectName)) {
                // 判断程序使用者是不是要查询课程
      double avg = sumArrayRow(score)[i]/studentName.length;
      System.out.println(avg);
     }
    }
   }
   if(inputContent.lastIndexOf("SUM") != -1 || inputContent.lastIndexOf("sum") != -1){
                //如果方法为求和则开始下边计算
    System.out.println("程序此方法待完善");
   }
  }
 }

 /**
  * 把二维数组每列的和放入一个一维数组返回
  * @param array
  * @return
  */
 public static double[] sumArrayRow(int array[][]){
  double arrayEveryRowSum[] = {0,0,0};     //定义一个存放每列总和的数组,这里和课程列数要匹配,否则会报空指针异常
  for(int i = 0; i < array.length; i++ ){     //得出行为i
   for(int j = 0; j < array[i].length; j++){   //得出列为j
    arrayEveryRowSum[j] = array[i][j] + arrayEveryRowSum[j];
                //对第i行第j列的数据进行操作
   }
  }
  return arrayEveryRowSum;        //把各列的总和返回
 }
 
 /**
  * 这个方法为查询数组一行的平均分,可用于一维数组和二维数组
  * @param array
  * @return
  */
 public static double avgArray(int array[]) {
  int countarray = 0;          // 定义一个表示数组元素总和的int数
  for (int i = 0; i < array.length; i++) {
   countarray = array[i] + countarray;     // 把当前数组元素的值加到countarray中
  }
  double arraylength = array.length;      // 把数组元素总数转换为double类型
  return countarray / arraylength;      // 用countarray除以数组元素个数的出平均数返回

 }
}

class Scores{ int math; int physics; //… //and so on public int getSum(){ return math+physics  /*+…*/; } } class Student{ String name; int number; Scores score=new Scores(); } 把学生封装成类多方便? 干吗要那样呢?
java是面向对象的语言,推荐象楼上说的封装成对象,很方便。。。楼上大致思路已经讲了,新手还是推荐多看下java的API

上一个:JAVA问题
下一个:java简介

CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,