Java二级操作题第33套
基本操作
在考生文件夹中存有文件名为Java_1.java的文件,该程序是不完整的,请在注释行"//Found"下一行语句的下划线地方填入正确内容,然后删除下划线,请勿删除注释行或改动其他已有语句内容。存盘时文件必须存放在考生文件夹下,不得改变原有文件的文件名。
程序的功能是:先把一组字符写入文件"test.dat"中,再从该文件中读出数据放在数组中,打印输出该数组。执行程序后,输出的结果为:
a b c d e f g h i
import java.io.*;
public class Java_1 {
public static void main(String[] args) {
char[] charArray = {'a','b','c','d','e','f','g','h','i'};
char c ;
try{
//*********Found**********
DataOutputStream out = new ______________________(
new FileOutputStream("test.dat"));
for(int i =0; i<charArray.length; i++){
out.writeChar(charArray[i]);
}
out.close();
DataInputStream in = new DataInputStream(
//*********Found**********
new FileInputStream("____________________"));
while(in.available() != 0){
c=in.readChar();
System.out.print(c+" ");
}
System.out.println();
//*********Found**********
in.____________________();
}catch(IOException e){}
}
}
本题考查的是IO。
由代码可以得知,out是一个DataOutputStream对象,DataOutputStream非接口而是类,所以第一空填写"DataOutputStream"。
题目要求将字符输入到文件test.dat中,FileInputStream是文件输入流,所以第二空填写"test.dat"。
输入流在操作结束后需要做关闭操作,所以第三空填写"close"。
具体程序如下:
import java.io.*;
public class Java_1 {
public static void main(String[] args) {
char[] charArray = {'a','b','c','d','e','f','g','h','i'};
char c ;
try{
//*********Found**********
DataOutputStream out = new DataOutputStream(
new FileOutputStream("test.dat"));
for(int i =0; i<charArray.length; i++){
out.writeChar(charArray[i]);
}
out.close();
DataInputStream in = new DataInputStream(
//*********Found**********
new FileInputStream("test.dat"));
while(in.available() != 0){
c=in.readChar();
System.out.print(c+" ");
}
System.out.println();
//*********Found**********
in.close();
}catch(IOException e){}
}
}
简单应用
在考生文件夹中存有文件名为Java_2.java的文件,该程序是不完整的,请在注释行"//Found"下一行语句的下划线地方填入正确内容,然后删除下划线,请勿删除注释行或改动其他已有语句内容。存盘时文件必须存放在考生文件夹下,不得改变原有文件的文件名。
本题的要求是:
在1-n之间的自然数中,每次抽取k个数字来抽奖,计算中奖几率的算法为:
n(n-1)(n-2)…(n-k+1)/(123…k)
完善程序,实现中奖几率的计算。
例如,在输入窗口中输入3, 
然后在如下的显示窗口输入20,
则程序最终的运行结果是:
你中奖的几率是1/1140. Gook luck!
//*********Found**********
import _______________.*;
public class Java_2{
public static void main(String[] args){
//*********Found**********
_____________ input = JOptionPane.showInputDialog("你想抽几个数?");
int k = Integer.parseInt(input);
input = JOptionPane.showInputDialog("你想在自然数中抽的最大数是几?");
int n = Integer.parseInt(input);
int lotteryOdds = 1;
//*********Found**********
for (int i = 1; i <= _________; i++)
lotteryOdds = lotteryOdds * (n - i + 1)/i;
//*********Found**********
System.out.println("你中奖的几率是1/" + __________________ + ". Good luck!");
System.exit(0);
}
}
本题考查的是JavaSwing。
JOptionPane属于javax.swing包下的类,所以第一空填写"javax.swing"。
JOptionPane.showInputDialog(“你想抽几位数?”)返回的是一个字符串,所以第二空填写"String"。
循环的次数是共有几个数,所以第三空填写"k"。
lotteryOdds即中奖概率,所以第四空填写"lotteryOdds"。
具体程序如下:
//*********Found**********
import javax.swing.*;
public class Java_2{
public static void main(String[] args){
//*********Found**********
String input = JOptionPane.showInputDialog("你想抽几个数?");
int k = Integer.parseInt(input);
input = JOptionPane.showInputDialog("你想在自然数中抽的最大数是几?");
int n = Integer.parseInt(input);
int lotteryOdds = 1;
//*********Found**********
for (int i = 1; i <= k; i++)
lotteryOdds = lotteryOdds * (n - i + 1)/i;
//*********Found**********
System.out.println("你中奖的几率是1/" + lotteryOdds + ". Good luck!");
System.exit(0);
}
}
综合应用
在考生文件夹中存有文件名为Java_3.java和Java_3.html的文件,该程序是不完整的,请在注释行"//Found"下一行语句的下划线地方填入正确内容,然后删除下划线,请勿删除注释行或改动其他已有语句内容。存盘时文件必须存放在考生文件夹下,不得改变原有文件的文件名。
本题的要求是:
用阶乘函数的递归定义:n!=n*(n-1)!计算0至10的阶乘的值,使小程序结果如下: 
import java.awt.*;
import javax.swing.*;
//*********Found**********
public class Java_3 extends _____________________{
JTextArea outputArea;
public void init(){
outputArea = new JTextArea();
//*********Found**********
Container c = ____________________();
//*********Found**********
c.add( __________________ );
//计算0至10的阶乘
for ( long i = 0; i <= 10; i++ )
outputArea.append(
i + "! = " + factorial( i ) + "\n" );
}
//阶乘的递归定义
public long factorial( long number ){
if ( number <= 1 )
return 1;
else
return number * factorial( number - 1 );
}
}
本题考查的是Applet。
根据题意所需要的是启动一个小程序,所以第一空填写"JApplet"。
Container接收的是一个全局上下文的Panel,所以第二空填写"getContentPane"。
根据题意需要将文本域加入到小程序中,所以第三空填写"outputArea"。
具体程序如下:
import java.awt.*;
import javax.swing.*;
//*********Found**********
public class Java_3 extends JApplet{
JTextArea outputArea;
public void init(){
outputArea = new JTextArea();
//*********Found**********
Container c = getContentPane();
//*********Found**********
c.add( outputArea );
//计算0至10的阶乘
for ( long i = 0; i <= 10; i++ )
outputArea.append(
i + "! = " + factorial( i ) + "\n" );
}
//阶乘的递归定义
public long factorial( long number ){
if ( number <= 1 )
return 1;
else
return number * factorial( number - 1 );
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!