一道java二级基本应用题
1.在考生文件夹中存有文件名为Java_2.java的文件,该程序是不完整的,请在注释行“ //********* Found ********** ” 下一行语句的下划线地方填入正确内容,然后删除下划线,请勿删除注释行或改动其他已有语句内容,存盘时文件必须存放在考生文件夹下,不得改变原有文件的文件名。
下面程序的功能是:给出一些学生的若干门课的成绩,计算所有成绩的中的最高分,及每个同学所有各门课的平均成绩。
代码如下:
import java.awt.*; import javax.swing.*; public class Java_2{ int grades[][] = { { 77, 68, 86, 73 }, { 96, 87, 89, 81 }, { 70, 90, 86, 81 } }; int students, exams; String output; JTextArea outputArea; public Java_2(){ students = grades.length; exams = grades[ 0 ].length; JFrame f = new JFrame(); f.setSize(300,300); f.setVisible(true);//显示 f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//关闭 //*********Found********** outputArea = new ________________(); Container c = f.getContentPane(); //*********Found********** c.add( ________________ ); output = "数组是:"; buildString(); output += "\n\n最高分: " + maximum() + "\n"; //*********Found********** for ( int i = 0; i < ________________; i++ ) output += "\n第" + (i+1) + "个学生的平均分是: " + average( grades[ i ] ); //*********Found********** outputArea.________________( output ); } //找最高分 public int maximum(){ int highGrade = 0; for ( int i = 0; i < students; i++ ) for ( int j = 0; j < exams; j++ ) if ( grades[ i ][ j ] > highGrade ) //*********Found********** highGrade = ________________; return highGrade; } //对各组学生确定平均分 public int average( int setOfGrades[] ){ int total = 0; for ( int i = 0; i < setOfGrades.length; i++ ) //*********Found********** total += ________________; return total /exams; } //输出格式 public void buildString(){ output += " "; for ( int i = 0; i < exams; i++ ) output += "[" + i + "] "; for ( int i = 0; i < students; i++ ) { output += "\ngrades[" + i + "] "; for ( int j = 0; j < exams; j++ ) output += grades[ i ][ j ] + " "; } } public static void main(String[ ]args){ new Java_2(); } }程序运行结果如下:
本题着重考察考生对Java语言数组和文本框绘制的掌握情况。
本题中的第一个空格:由程序运行结果可以看出最终显示为文本区域,因此此处空格填入JTextArea;
本题中的第二个空格:容器初始化完成后要加入具体展示的内容,此处为创建好的JTextArea对象,因此此处空格填入outputArea; 点击了解JTextArea
本题中的第三个空格:要算出每个学生的平均分,需要以学生人数为最大值进行循环,因此此处空格填入students;
本题中的第四个空格:新建好的JTextArea对象需要设置显示的内容,使用setText方法,因此此处空格填入setText;
本题中的第五个空格:所有的成绩放在二维数组grades中,因此要对每个二维数组的值进行比较后将最大值存入highGrade,当二维数组值大于highGrade时则将该值存入,因此此处空格填入grades[ i ] [ j ];
本题中的第六个空格:计算平均分之前需要算好总分,要将每个学生的所有成绩相加,因此此处空格填入setOfGrades[ i ]。 本评析仅作参考。
代码中一些方法等的学习:
setVisible(boolean)方法: setVisible(boolean)方法是用来显示/隐藏GUI组件的。 需要显示则使用true,需要隐藏则使用false。 setVisible(true)方法的意思是说数据模型已经构造好了,允许JVM可以根据数据模型执行paint方法开始画图并显示到屏幕上了,并不是显示图形,而是可以运行开始画图,要把setVisible()方法放到最后面,代码是按顺序执行的 ,如果把setVisible()放在前边,后边再添加其他组件的时候,有可能不会显示出来。
完整代码如下:
import java.awt.*; import javax.swing.*; public class Java_2{ int grades[][] = { { 77, 68, 86, 73 }, { 96, 87, 89, 81 }, { 70, 90, 86, 81 } }; int students, exams; String output; JTextArea outputArea; public Java_2(){ students = grades.length; exams = grades[ 0 ].length; JFrame f = new JFrame(); f.setSize(300,300); f.setVisible(true); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //*********Found********** outputArea = new JTextArea(); Container c = f.getContentPane(); //*********Found********** c.add( outputArea ); output = "数组是:"; buildString(); output += "\n\n最高分: " + maximum() + "\n"; //*********Found********** for ( int i = 0; i <students ; i++ ) output += "\n第" + (i+1) + "个学生的平均分是: " + average( grades[ i ] ); //*********Found********** outputArea.setText( output ); } //找最高分 public int maximum(){ int highGrade = 0; for ( int i = 0; i < students; i++ ) for ( int j = 0; j < exams; j++ ) if ( grades[ i ][ j ] > highGrade ) //*********Found********** highGrade = grades[ i ] [ j ]; return highGrade; } //对各组学生确定平均分 public int average( int setOfGrades[] ){ int total = 0; for ( int i = 0; i < setOfGrades.length; i++ ) //*********Found********** total += setOfGrades[ i ]; return total /exams; } //输出格式 public void buildString(){ output += " "; for ( int i = 0; i < exams; i++ ) output += "[" + i + "] "; for ( int i = 0; i < students; i++ ) { output += "\ngrades[" + i + "] "; for ( int j = 0; j < exams; j++ ) output += grades[ i ][ j ] + " "; } } public static void main(String[ ]args){ new Java_2(); } }