收藏 分销(赏)

java入门程序题及源码5.doc

上传人:xrp****65 文档编号:7444446 上传时间:2025-01-04 格式:DOC 页数:17 大小:238.50KB 下载积分:10 金币
下载 相关 举报
java入门程序题及源码5.doc_第1页
第1页 / 共17页
java入门程序题及源码5.doc_第2页
第2页 / 共17页


点击查看更多>>
资源描述
一. 实验目的 理解并掌握线程与同步 学会使用java实现GUI设计 学会使用awt和Swing组件的一般功能 二. 实验内容 实验题目一: 分别建立两个线程,产生并显示[100,10000]和[2000,3000]之间的随机数各 10000个,并分别求和显示出来 1. 程序源代码 import java.util.*; class MyThread1 implements Runnable{ public void run(){ Random r=new Random(); int n,i=0; long p=0; do{ n = r.nextInt(9901)+100; p = p+n; System.out.printf("%d ",n); i++; } while( i<10000); System.out.println(); System.out.println("the sum of 10000 number between [100,10000] is:"+p); } } class MyThread2 implements Runnable{ public void run(){ Random r=new Random(); int n,i=0; long p=0; do{ n = r.nextInt(1001)+2000; p = p+n; System.out.printf("%d ",n); i++; } while( i<10000); System.out.println(); System.out.println("the sum of 10000 number between [2000,3000] is:"+p); } } public class title5_1{ public static void main(String args[]){ System.out.println("the random numbers are shown as follows:"); MyThread1 holy=new MyThread1(); Thread t1=new Thread(holy); t1.start(); MyThread2 shit=new MyThread2(); Thread t2=new Thread(shit); t2.start(); } } 2. 实验结果 实验题目二: 建立两个线程分别不断读取两个文本文件中的数据并求和,当为-1时结束并显示求和结果。 1. 程序源代码 import java.io.*; import java.util.*; class sum{ private int sum=0; synchronized void sum(int i){ sum=sum+i; } public void sum1(){ System.out.println("="+sum); } } class MyThread1 implements Runnable{ sum sum2; MyThread1(sum sum2){ this.sum2=sum2; new Thread(this).start(); } public void run(){ try{ Scanner sc1=new Scanner(new File("num1.txt")); int n; while(sc1.hasNextInt()){ if((n=sc1.nextInt())==-1){ sum2.sum1(); System.exit(-1); } else{ System.out.printf("+%d",n); try{ Thread.sleep(300); }catch(InterruptedException e){} sum2.sum(n); } } } catch(Exception e){} } } class MyThread2 implements Runnable{ sum sum2; MyThread2(sum sum2){ this.sum2=sum2; new Thread(this).start(); } public void run(){ try{ Scanner sc2=new Scanner(new File("num2.txt")); int n; while(sc2.hasNextInt()){ if((n=sc2.nextInt())==-1){ sum2.sum1(); System.exit(-1); } else{ System.out.printf("+%d",n); try{ Thread.sleep(300); }catch(InterruptedException e){} sum2.sum(n); } } } catch(Exception e){} } } public class title5_2{ public static void main(String[] args){ System.out.printf("sum=0"); sum sum1=new sum(); MyThread1 holy=new MyThread1(sum1); MyThread2 shit=new MyThread2(sum1); } } 2.实验结果 实验题目三: 请编写一个swing图形界面程序,设计一个计算器,要求如下: (1) 支持+、-、*、/ 和%等常用运算符; (2) 支持sin、cos、max、min、pow和sqrt等常用函数; (3) 支持十进制、八进制、十六进制和二进制之间的转换。 1. 程序源代码 import javax.swing.*; import java.awt.*; import java.awt.event.*; public class title5_3 extends JFrame implements ActionListener { double num1, num2, num3; boolean end, add, mul, sub, div, sin, cos, max, min, Hex, Oct, Bin; JTextField t = new JTextField("0"); JButton button[] = new JButton[24]; JPanel p1 = new JPanel(); JPanel p2 = new JPanel(); public title5_3() { setTitle("计算器"); setResizable(false); setBounds(100, 100, 330, 280); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); add(p1, "North"); t.setEditable(false); t.setColumns(28); t.setHorizontalAlignment(JTextField.RIGHT); p1.add(t); GridLayout l = new GridLayout(4, 0); l.setVgap(10); l.setHgap(10); p2.setLayout(l); add(p2, "Center"); button[0] = new JButton("1"); button[1] = new JButton("2"); button[2] = new JButton("3"); button[3] = new JButton("sin"); button[3].setMargin(new Insets(0,0,0,0)); button[4] = new JButton("Oct"); button[4].setMargin(new Insets(0,0,0,0)); button[5] = new JButton("+"); button[6] = new JButton("4"); button[7] = new JButton("5"); button[8] = new JButton("6"); button[9] = new JButton("cos"); button[9].setMargin(new Insets(0,0,0,0)); button[10] = new JButton("Hex"); button[10].setMargin(new Insets(0,0,0,0)); button[11] = new JButton("-"); button[12] = new JButton("7"); button[13] = new JButton("8"); button[14] = new JButton("9"); button[15] = new JButton("max"); button[15].setMargin(new Insets(0,0,0,0)); button[16] = new JButton("Bin"); button[16].setMargin(new Insets(0,0,0,0)); button[17] = new JButton("*"); button[18] = new JButton("0"); button[19] = new JButton("."); button[20] = new JButton("="); button[21] = new JButton("min"); button[21].setMargin(new Insets(0,0,0,0)); button[22] = new JButton(","); button[23] = new JButton("/"); for (JButton x : button) { p2.add(x); x.addActionListener(this); } JLabel ll = new JLabel(); ll.setPreferredSize(new Dimension(10, 0)); add(ll, "West"); JLabel rl = new JLabel(); rl.setPreferredSize(new Dimension(10, 0)); add(rl, "East"); setVisible(true); } public static void main(String args[]) { title5_3 calculator = new title5_3(); } public void num(int i) { String s = String.valueOf(i); if (end) { t.setText("0"); end = false; } if ( (t.getText()).equals("0")) { t.setText(s); } else { String str = t.getText() + s; t.setText(str); } } public void sign(int i) { if (i == 1) { add = true; mul = false; sub = false; div = false; sin = false; cos = false; max = false; min = false; Hex = false; Oct = false; Bin = false; } if (i == 2) { add = false; mul = false; sub = true; div = false; sin = false; cos = false; max = false; min = false; Hex = false; Oct = false; Bin = false; } if (i == 3) { add = false; mul = true; sub = false; div = false; sin = false; cos = false; max = false; min = false; Hex = false; Oct = false; Bin = false; } if (i == 4) { add = false; mul = false; sub = false; div = true; sin = false; cos = false; max = false; min = false; Hex = false; Oct = false; Bin = false; } if (i == 5) { add = false; mul = false; sub = false; div = false; sin = true; cos = false; max = false; min = false; Hex = false; Oct = false; Bin = false; } if (i == 6) { add = false; mul = false; sub = false; div = false; sin = false; cos = true; max = false; min = false; Hex = false; Oct = false; Bin = false; } if (i == 7) { add = false; mul = false; sub = false; div = false; sin = false; cos = false; max = true; min = false; Hex = false; Oct = false; Bin = false; } if (i == 8) { add = false; mul = false; sub = false; div = false; sin = false; cos = false; max = false; min = true; Hex = false; Oct = false; Bin = false; } if (i == 9) { add = false; mul = false; sub = false; div = false; sin = false; cos = false; max = false; min = false; Hex = true; Oct = false; Bin = false; } if (i == 10) { add = false; mul = false; sub = false; div = false; sin = false; cos = false; max = false; min = false; Hex = false; Oct = true; Bin = false; } if (i == 11) { add = false; mul = false; sub = false; div = false; sin = false; cos = false; max = false; min = false; Hex = false; Oct = false; Bin = true; } if((i!=5)&&(i!=6)&&(i!=7)&&(i!=8)){ num1 = Double.parseDouble(t.getText()); } end = true; } public void point() { String s; if (t.getText().indexOf('.') < 0) { s = t.getText() + "."; t.setText(s); } } public void sepa() { String s; s = t.getText() + ","; t.setText(s); } public void sin(){ t.setText("sin"); } public void cos(){ t.setText("cos"); } public void max(){ t.setText("max"); } public void min(){ t.setText("min"); } public void eql() { String s=""; int k; //计算 if(add||div||mul||sub) num2 = Double.parseDouble(t.getText()); if(max||min){ s = t.getText(); k = s.indexOf(","); num1 = Double.parseDouble(s.substring(0,k)); num2 = Double.parseDouble(s.substring(k+1,s.length())); } if (add) num3 = num1 + num2; if (mul) num3 = num1 * num2; if (sub) num3 = num1 - num2; if (div) num3 = num1 / num2; if (sin) num3 = Math.sin(num2/180*Math.PI); if (cos) num3 = Math.cos(num2/180*Math.PI); if (Oct) s = Integer.toOctalString((int)num1); if (Hex) s = Integer.toHexString((int)num1); if (Bin) s = Integer.toBinaryString((int)num1); if (max) num3 = Math.max(num1,num2); if (min) num3 = Math.min(num1,num2); if(!(Oct||Hex||Bin)) s = String.valueOf(num3); t.setText(s); end = true; } public void actionPerformed(ActionEvent e) { if (e.getSource() == button[0]) num(1); if (e.getSource() == button[1]) num(2); if (e.getSource() == button[2]) num(3); if (e.getSource() == button[6]) num(4); if (e.getSource() == button[7]) num(5); if (e.getSource() == button[8]) num(6); if (e.getSource() == button[12]) num(7); if (e.getSource() == button[13]) num(8); if (e.getSource() == button[14]) num(9); if (e.getSource() == button[18]) num(0); if (e.getSource() == button[5]) sign(1); if (e.getSource() == button[11]) sign(2); if (e.getSource() == button[17]) sign(3); if (e.getSource() == button[23]) sign(4); if (e.getSource() == button[19]) point(); if (e.getSource() == button[20]) eql(); if (e.getSource() == button[3]){ sin(); sign(5); } if (e.getSource() == button[9]){ cos(); sign(6); } if (e.getSource() == button[4]) sign(10); if (e.getSource() == button[10]) sign(9); if (e.getSource() == button[16]) sign(11); if (e.getSource() == button[15]){ max(); sign(7); } if (e.getSource() == button[21]){ min(); sign(8); } if (e.getSource() == button[22]) sepa(); } } 2.试验结果 实验题目四: 编写一个swing图形界面程序能将多行文本框中的内容保存到一个文本文件,也能将一个文本文件的内容显示到这个多行文本框中。 1. 程序源代码 import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.io.*; import java.util.*; public class title5_4 { public static void main(String args[]) { JFrame frame = new JFrame(); FlowLayout flow = new FlowLayout(); final JTextArea textArea1 = new JTextArea(20, 30); JButton button2 = new JButton("写入holyshit.txt"); JButton button1 = new JButton("从holyshit.txt读出"); JPanel p1 = new JPanel(); JPanel p2 = new JPanel(); Container contentPane=frame.getContentPane(); contentPane.add(p1, "North"); contentPane.add(p2, "Center"); p1.add(textArea1); p2.setLayout(flow); p2.add(button1); p2.add(button2); frame.setTitle("文本读写"); frame.setResizable(false); frame.setBounds(100, 100, 400, 450); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); contentPane.add(p1, "North"); contentPane.add(p2, "Center"); frame.setVisible(true); button1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event) { try{ Reader reader = new FileReader("holyshit.txt"); textArea1.read(reader,null); }catch(Exception e){ System.out.println("无法读出文件"); } } }); button2.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event) { try{ Writer writer = new FileWriter("holyshit.txt"); textArea1.write(writer); }catch(Exception e){ System.out.println("无法写入文件"); } } }); } } 2.试验结果
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 应用文书 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服