任务描述
编写程序:该程序用于根据Java面向对象程序设计这门课程的成绩评定规则,完成对学生最终成绩的评定。
最终成绩=平时成绩×30%+实验成绩×30%+期末考试×40%
平时成绩、实验成绩、期末考试都按百分制给出,使用单精度型。
编程要求
(1)程序运行时,依次提示输入学号、姓名、平时成绩、实验成绩及期末考试成绩。 (2)要输出最终成绩的计算结果(四舍五入到小数点后2位有效数字)及对应的“A”(>=90)、“B”(>=80 and <90)、“C”(>=70 and <80)、“D”(>=60 and <70)、“E”(<60) (3)你只需要在Teacher.java和Student.java中完成使主类正常运行的类的定义即可。
import java.util.Scanner;
public class MainClass {
public static Scanner sc=new Scanner(System.in);
public static void main(String[] args) {
// TODO Auto-generated method stub
Student stu=new Student();
//从控制台输入学生信息
Teacher.inputInfo(stu,sc);
//根据输入的学生信息进行处理:计算总评成绩及对应等级
stu.updateGrade();
//输出处理后的结果
stu.outputInfo();
sc.close();
}
}
public class Student {
static int number;
static String name;
static double pscore;
static double sscore;
static double kscore;
static double sum;
static String level;
public void updateGrade() {
sum = pscore*0.3+sscore*0.3+kscore*0.4;
if (sum>90){
level = "A";
}else if(sum>=80 && sum<90){
level = "B";
}else if(sum>=70 && sum<80){
level = "C";
}else if(sum>=60 && sum<90){
level = "D";
}else {
level = "E";
}
}
public void outputInfo() {
System.out.println("学号=姓名=平时成绩=实验成绩=期末考试="+name+"("+number+")的课程\"Java面向对象程序设计\"的成绩评定如下:");
String pscore1 = String.format("%.2f",pscore);
String sscore1 = String.format("%.2f",sscore);
String kscore1 = String.format("%.2f",kscore);
String sum1 = String.format("%.2f",sum);
System.out.println("平时成绩:"+pscore1);
System.out.println("实验成绩:"+sscore1);
System.out.println("期末考试:"+kscore1);
System.out.println("总评:"+sum1+",等级:"+level);
}
}
import java.util.Scanner;
public class Teacher {
public static void inputInfo(Student stu, Scanner sc) {
stu.number = sc.nextInt();
stu.name = sc.next();
stu.pscore = sc.nextDouble();
stu.sscore = sc.nextDouble();
stu.kscore = sc.nextDouble();
}
}
任务描述
矩阵运算是线性代数中的基本运算。请实现一个Matrix类,可以实现矩阵乘法、矩阵的数组乘法、矩阵相加、相减,矩阵转置、矩阵和一个标量的乘积。
测试说明
平台会对你编写的代码进行测试,以下是测试画面之一:
输入矩阵行列数
2 3
输入2×3矩阵
[0][0]=1
[0][1]=2
[0][2]=3
[1][0]=4
[1][1]=5
[1][2]=6
矩阵A=
[[1.00, 2.00, 3.00],
[4.00, 5.00, 6.00]]
输入2×3矩阵
[0][0]=4
[0][1]=5
[0][2]=3
[1][0]=8
[1][1]=7
[1][2]=0.3
矩阵B=
[[4.00, 5.00, 3.00],
[8.00, 7.00, 0.30]]
运算结果如下:
C=
[[5.00, 7.00, 6.00],
[12.00, 12.00, 6.30]]
D=
[[6.60, 7.60, 8.60],
[9.60, 95.00, 11.60]]
F=
[[3.40, 6.80, 10.20],
[13.60, 303.96, 20.40]]
G=
[[1.00, 4.00],
[2.00, 89.40],
[3.00, 6.00]]
E=
[[14.00, 200.80],
[200.80, 8044.36]]
import java.util.Scanner;
public class MainClass {
public static Scanner sc=new Scanner(System.in);
public static void main(String[] args) {
int rowCount,colCount;
System.out.println("输入矩阵行列数");
rowCount=sc.nextInt();
colCount=sc.nextInt();
//创建1个rowCount×colCount的矩阵,矩阵所有元素初始化为0
Matrix matA=new Matrix(rowCount,colCount);
MainClass.inputMatrix(matA);
System.out.println("矩阵A=\n"+matA);
Matrix matB=new Matrix(rowCount,colCount);
MainClass.inputMatrix(matB);
System.out.println("矩阵B=\n"+matB);
System.out.println("运算结果如下:");
//执行矩阵相加运算
Matrix matC=matA.plus(matB);
System.out.println("C=\n"+matC);
//修改matA的第2行,第2列的那个元素
matA.data[1][1]=89.4;
//执行矩阵与一个数相加的运算,即矩阵的所有元素都加上这个数
Matrix matD=matA.plus(5.6);
System.out.println("D=\n"+matD);
//执行矩阵和1个数相乘,即矩阵的所有元素都乘上这个数
Matrix matF=matA.multiply(3.4);
System.out.println("F=\n"+matF);
//求转置矩阵
Matrix matG=matA.transpose();
System.out.println("G=\n"+matG);
//执行矩阵乘法,不清楚矩阵乘法的真正含义,请参考线性代数教材。
Matrix matE=matA.multiply(matG);
//按[[1,2,3],[4,5,6]]类似格式输出矩阵,这里的逗号都是英文逗号
System.out.println("E=\n"+matE);
MainClass.sc.close();
}
private static void inputMatrix(Matrix mat) {
int rowCount=mat.getRowCount();
int colCount=mat.getColCount();
// System.out.println(rowCount);
// System.out.println(colCount);
System.out.println("输入"+rowCount+"×"+colCount+"矩阵");
for(int i=0;i<rowCount;i++) {
for(int j=0;j<colCount;j++) {
System.out.print("["+i+"]["+j+"]=");
mat.data[i][j]=sc.nextDouble();
}
}
}
}
import java.text.DecimalFormat;
//请实现Matrix类,在下方完成代码。
//提示:要将浮点型数四十五入小数点后面若干位,可使用DecimalFormat类,请参考IDE中的帮助或百度。
public class Matrix {
int rowCount;
int colCount;
double[][] data;
public Matrix() {
}
public Matrix(int rowCount, int colCount) {
this.rowCount = rowCount;
this.colCount = colCount;
this.data = new double[rowCount][colCount];
}
public int getRowCount() {
return rowCount;
}
public int getColCount() {
return colCount;
}
public Matrix plus(Matrix matB){
Matrix matC = new Matrix();
matC.data = new double[rowCount][colCount];
for(int i = 0; i<rowCount;i++){
for(int j = 0; j<colCount; j++){
matC.data[i][j] = this.data[i][j] + matB.data[i][j];
}
}
return matC;
}
public Matrix plus(double q){
Matrix matD = new Matrix();
matD.data = new double[rowCount][colCount];
for(int i = 0; i<rowCount;i++){
for(int j = 0; j<colCount; j++){
matD.data[i][j] = this.data[i][j] + q;
}
}
return matD;
}
public Matrix multiply(double p){
Matrix matF = new Matrix();
matF.data = new double[rowCount][colCount];
for(int i = 0; i<rowCount;i++){
for(int j = 0; j<colCount; j++){
matF.data[i][j] = this.data[i][j] * p;
}
}
return matF;
}
public Matrix transpose(){
Matrix matE = new Matrix();
matE.data = new double[colCount][rowCount];
for(int i = 0; i<rowCount;i++){
for(int j = 0; j<colCount; j++){
matE.data[j][i] = this.data[i][j];
}
}
return matE;
}
public Matrix multiply(Matrix matG){
Matrix matE = new Matrix();
matE.data = new double[this.data.length][matG.data[0].length];
for(int i = 0; i<this.data.length; i++){
for(int j = 0; j<matG.data[0].length; j++){
for(int k = 0; k<this.data[0].length;k++){
matE.data[i][j] += this.data[i][k] * matG.data[k][j];
}
}
}
return matE;
}
@Override
public String toString() {
int i ;
int j ;
String result = "[";
for(i = 0; i<data.length; i++){
if(i!=0){
result += " ";
}
result+="[";
for(j = 0; j<data[0].length; j++){
DecimalFormat format = new DecimalFormat(".00");
result += format.format(data[i][j]);
if(j < data[0].length-1){
result += ",";
}
if(j == data[0].length-1 && i != data.length-1){
result += "],\n";
}
}
if (i == data.length-1){
result += "]]";
}
}
return result;
}
}
wlw的同学可以看看我另外一篇类与对象的,有些话希望各位看一下,哪怕你觉得很多余。