一道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();
}
}