@Java期末复习编程题
一、请编写一个 Java 程序,随机生成 20 个不重复的[1, 100]之间的整数,将这 20 个整数排序(按 从小到大的顺序)以后,以文本文件的格式写入文件”data.txt”中,数字之间用空格间隔
代码如下(示例):
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.*;
import java.io.IOException;
import java.util.Iterator;
import java.util.Random;
import java.util.TreeSet;
public class Demo2 {
public static void main(String[] args) throws IOException {
TreeSet ts = new TreeSet();
Random r = new Random();
while(ts.size()<20) {
int sum = r.nextInt(100)+1;
ts.add(sum);
}
FileWriter fos = new FileWriter("data.txt");
StringBuffer sb=new StringBuffer();
Iterator it=ts.iterator();
while(it.hasNext()){
sb.append(it.next()+" ");
}
fos.write(sb.toString());
fos.close();
}
}
二、使用 Java 语言编程,完成从键盘接收两个整数 left,right,计算[left, right] 之间的所有不 能被 3 或 5 整除的数之和,最后输出这些数的和。
比如,如果输入为 left 和 right 分别为 1 和 20,则输出结果为:112。因为满足条件的数有:
1,2,4, 7, 8, 11, 13, 14, 16, 17, 19,其和为 112。
代码如下(示例):
import java.util.Scanner;
public class Demo4 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int left = sc.nextInt();
int right = sc.nextInt();
int sum = 0;
for(int i = left;i<=right;i++) {
if(i%3!=0&&i%5!=0) {
sum+=i;
}
}
System.out.println(sum);
}
}
三、. 请编写一个如下图所示的 GUI 程序,放入两个文本域,在其中输入两个整数,单点等号按钮,
将两个整数相加的结果显示于标签中。
代码如下(示例):
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.*;
import javax.swing.*;
public class demo1 {
public static void main(String[] args) {
JFrame frame = new JFrame("加法器");
frame.setLayout(new BorderLayout());
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(300,100);
frame.setLocation(400, 400);
JPanel jp = new JPanel();
JTextField tf1 = new JTextField (5);
JTextField tf2 = new JTextField (5);
JTextArea ja = new JTextArea(1,5);
ja.setEditable(false);//不可编辑
JButton jb = new JButton("=");
JLabel jl=new JLabel("+");
jb.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
int num1 = Integer.parseInt(tf1.getText());
int num2 = Integer.parseInt(tf2.getText());
int sum = num1+num2;
ja.setText(String.valueOf(sum));
}
});
jp.add(tf1);
jp.add(jl);
jp.add(tf2);
jp.add(jb);
jp.add(ja);
frame.add(jp,BorderLayout.CENTER);
frame.setVisible(true);
}
}
#四、键盘输入五个数据并排序
代码如下(示例):
import java.util.Scanner;
public class paixuDemo {
public static void main(String[] args) {
int arr[] = new int[5];
Scanner sc = new Scanner(System.in);
for(int i =0;i<5;i++) {
arr[i]=sc.nextInt();
}
System.out.println();
for(int i =1;i<arr.length;i++) {
for(int j = 0;j<arr.length-i;j++) {
if(arr[j]>arr[j+1]) {
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1]=temp;
}
}
}
for(int i=0;i<arr.length;i++) {
System.out.print(arr[i]+" ");
}
}
}
#五、请编写一个 Java 程序,模拟福利彩票“31 选 7”的抽奖方式(即从 1,2,3……,31
中随机选取不重复的 7 个数字),并按从小到大的顺序,以文本文件的方式写入文
件“data.txt”中,每个数之间用空格分开。注意,小于 10 的数字写入时请在前
面补“0”,比如,“1”,则以“01”写入文件。
代码如下(示例):
import java.io.FileWriter;
import java.io.IOException;
import java.util.*;
public class demo3 {
public static void main(String[] args) throws Exception {
Random r = new Random();
TreeSet ts = new TreeSet();
while(ts.size()<7) {
ts.add(1+r.nextInt(31-1+1));
}
FileWriter fw = new FileWriter("data.txt");
Iterator it = ts.iterator();
while(it.hasNext()){
StringBuilder sb = new StringBuilder();
sb.append(it.next());
String s = sb.toString();
int num = Integer.parseInt(s);
if(num<10) {
fw.write("0");
}
fw.write(s);
fw.write(" ");
}
fw.close();
}
}