1、多线程编程:创建一个AccountThread类(定义一个成员变量balance,初始值1000),继承Runnable接口,实现线程功能:
(1)一个线程取名为:按照要求计算数字个数。每次线程执行时,求出300~400之间满足以下条件的所有数。条件:各数字之和为12,各数字之积为42。并将求出的数字依次输出。当按要求输出所有数字后退出线程。
(2)另外一个线程取名为:计算。每次线程执行时,完成形式如“操作数 运算符 操作数”的四则(+ - * /)运算,并输出运算结果,(例如输入:3.1+4.8 输出:7.9)。当输入的运算符有误时,退出线程;
(3)主测试类TestDemo中,创建的2个线程对象分别为t1(按照要求计算数字个数)、t2(计算)。
编程实现以上要求。
package hml;
import java.util.ArrayList;
import java.util.Scanner;
import java.awt.List;
public class ml {
public static void main(String[] args) {
AccountThread t = new AccountThread();
MathThread s = new MathThread();
Thread t1 = new Thread(t,"算数字");
Thread s1 = new Thread(s,"计算");
t1.start();
s1.start();
}
}
class AccountThread implements Runnable{
int balance = 1000;
public void run() {
int a,b,c = 0;
int sum,mul = 0;
ArrayList<Integer> list = new ArrayList<>();
for(int i=300; i<=400; ++i) {
a = i / 100;
b = (i%100) / 10;
c = i % 10;
sum = a+b+c;
mul = a*b*c;
if((sum == 12) && (mul == 42)) {
list.add(i);
}
}
System.out.println(list.toString());
System.exit(0);
}
}
class MathThread implements Runnable{
public void run() {
int a,b,c = 0;
Scanner sc = new Scanner(System.in);
String s;
a = sc.nextInt();
s = sc.next();
b = sc.nextInt();
switch(s) {
case "+" :
c = a + b;
System.out.println(c);
break;
case "-" :
c = a - b;
System.out.println(c);
break;
case "*" :
c = a * b;
System.out.println(c);
break;
case "/" :
c = a / b;
System.out.println(c);
break;
default :
System.exit(0);
}
}
}
运行截图
2、在任意位置使用File类创建test.txt文件,完成以下操作:
(1)向文件内写入如图所示内容(用程序写入,不能直接在文件里编辑)。
(2)在屏幕上显示文件内容。(用程序实现显示,不能直接打开文件完成显示)
(3)在屏幕上显示文件属性(文件的路径、修改时间、大小、长度、可读性)。
要求:结合缓冲流来实现。
package asd;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.sql.Date;
public class test2 {
public static void main(String[] args) throws IOException {
try {
String a = "1、只解沙场为国死,何须马革裹尸还。出自清代徐锡麟的<出塞》\r\n" +
"\r\n" +
"译文:战士只知道在战场上为国捐躯,哪会想将来战死后尸体以马革包裹而还。\r\n" +
"\r\n" +
"2、黄沙百战穿金甲,不破楼兰终不还。--出自唐代王昌龄的《从军行七首.其四》\r\n" +
"\r\n" +
"译文:守边将士身经百战,铠甲磨穿,壮志不灭,不打败进犯之敌,誓不返回家乡。\r\n" +
"\r\n" +
"3、人生自古谁无死,留取丹心照汗青。--出自宋代文天祥的《过零丁洋》\r\n" +
"\r\n" +
"译文:自古以来,人终不免一死!倘若能为国尽忠,死后仍可光照千秋,青史留名。\r\n" +
"文件长度:430字节\r\n" +
"文件或者目录:是文件\r\n" +
"文件或者目录:不是目录\r\n" +
"是否可读:可读取\r\n" +
"是否可写:可写入\r\n" +
"是否隐藏:不是隐藏文件\r\n" +
"最后修改日期:2021-04-22\r\n" +
"文件名称:test.txt\r\n" +
"文件路径:E:\\test.txt\r\n" +
"绝对路径:E:\\test.txt";
File fos=new File("E:/","test.txt");
FileOutputStream fo = new FileOutputStream(fos);
FileReader fr = new FileReader(fos);
fo.write(a.getBytes());
int i;
while ((i = fr.read()) != -1) {
System.out.print((char) i);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
}
运行截图
3、利用Java的绘图功能,在窗体上绘制如下饼图:红色占20%、蓝色占45%、绿色占35%,如下图所示。
package hml;
import java.awt.*;
import javax.swing.*;
class mycanvas extends Canvas
{
mycanvas()
{
setSize(400,400);
}
public void paint(Graphics e)
{
e.setColor(Color.green);
e.fillOval(50,50,100,100);
e.setColor(Color.red);
e.fillArc(50,50,100,100,85,125);
e.setColor(Color.blue);
e.fillArc(50,50,100,100,145,145);
}
}
public class ml extends JFrame {
ml(){
super("绘制饼图");
setSize(500,500);
setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
mycanvas c = new mycanvas();
add(c);
}
public static void main(String args[]){
new ml();
}
}
运行截图