`
fandayrockworld
  • 浏览: 312947 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

初学Java必会的几道练习题(上)

阅读更多
学java 时基础知识没有学好,学到的现在也忘得差不多了,补补。
(下)不大好就不转了。

转自:http://513500795.qzone.qq.com/blog/1215508623?ptlang=2052

1.文件加密器 
import java.awt.*; 
import java.awt.event.*; 
import javax.swing.*; 
import javax.swing.event.*; 
import java.io.*; 
public class FileLock extends JFrame implements ActionListener 
{ 
private JMenuBar menuBar; 
private JMenu file; 
private JLabel fileName; 
private JButton replace,newfile; 
public FileLock() 
{ 
  super("杨明文件加密器"); 
  menuBar=new JMenuBar(); 
  fileName=new JLabel("请选择需要加密的文件"); 
  file=new JMenu("File"); 
  replace=new JButton("覆盖原文件"); 
  newfile=new JButton("创建新文件"); 
  init(); 
  showFrame(); 
} 
public void init() 
{ 
  JMenuItem item=null; 
  file.add(item=new JMenuItem("打开..."));item.addActionListener(this); 
  file.add(item=new JMenuItem("退出"));item.addActionListener(this); 
  replace.addActionListener(this); 
  newfile.addActionListener(this); 
  menuBar.add(file); 
  this.setLayout(new FlowLayout(FlowLayout.CENTER)); 
  this.add(replace); 
  this.setJMenuBar(menuBar); 
  this.add(newfile); 
  this.add(fileName); 
} 
public void showFrame() 
{ 
  this.setSize(300,120); 
  this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
  this.setVisible(true); 
  this.setResizable(false); 
} 
public void actionPerformed(ActionEvent e) 
{ 
  String command=e.getActionCommand(); 
  if(command.equals("打开...")) 
  { 
   JFileChooser jfc=new JFileChooser(); 
   jfc.showOpenDialog(this); 
   try 
   { 
    if(!(jfc.getName(jfc.getSelectedFile())).equals("")) 
    { 
     fileName.setText(jfc.getSelectedFile().getPath()); 
    } 
   } 
   catch(Exception ex) 
   { 
     
   } 
  } 
  if(command.equals("覆盖原文件")) 
  { 
   RandomAccessFile rafs=null; 
   if(fileName.getText().equals("请选择需要加密的文件")) 
   { 
    JOptionPane.showMessageDialog(this,"请选择需要加密的文件"); 
   } 
   else 
   { 
    try 
    { 
     rafs=new RandomAccessFile(fileName.getText(),"rw"); 
     int number=-1,input=0; 
     while((number=rafs.read())!=-1) 
     { 
      fileName.setText("正在加密..."); 
      input=number^10; 
      rafs.seek(rafs.getFilePointer()-1); 
      rafs.write(input); 
     } 
     JOptionPane.showMessageDialog(this,"文件加密成功!"); 
     fileName.setText("请选择需要加密的文件"); 
    } 
    catch(Exception ea) 
    { 
     
    } 
    finally 
    { 
     if(rafs!=null) 
     { 
      try 
      { 
       rafs.close(); 
      } 
      catch(IOException eb) 
      {} 
     }     
    } 
   } 
  } 
  if(command.equals("创建新文件")) 
  { 
   OutputStream os=null; 
   RandomAccessFile rafs=null; 
   if(fileName.getText().equals("请选择需要加密的文件")) 
   { 
    JOptionPane.showMessageDialog(this,"请选择需要加密的文件"); 
   } 
   else 
   { 
    try 
    { 
     rafs=new RandomAccessFile(fileName.getText(),"rw"); 
     os=new FileOutputStream(fileName.getText()+".ym"); 
     int number=-1,input=0; 
     while((number=rafs.read())!=-1) 
     { 
      fileName.setText("正在加密..."); 
      input=number^10; 
      os.write(input); 
     } 
     os.flush(); 
     JOptionPane.showMessageDialog(this,"文件加密成功!"); 
     fileName.setText("请选择需要加密的文件"); 
    } 
    catch(Exception ea) 
    { 
     
    } 
    finally 
    { 
     if(rafs!=null&&os!=null) 
     { 
      try 
      { 
       rafs.close(); 
       os.close(); 
      } 
      catch(IOException eb) 
      { 
       
      } 
     }     
    } 
   } 
  } 
} 
public static void main(String[] args) 
{ 
  new FileLock(); 
} 
} 
2.倒计时牌 
import java.awt.*; 
import java.awt.event.*; 
import javax.swing.*; 
import javax.swing.event.*; 
import java.util.*; 
public class OlympicTime extends JFrame implements Runnable 
{ 
JLabel[] labels=new JLabel[9]; 
JPanel jp1,jp2; 
public OlympicTime() 
{ 
  super("奥运会倒计时"); 
  labels[0]=new JLabel("距离2008年奥运会(这儿可以换别的,下面的时间对应改就OK)还有:"); 
  labels[1]=new JLabel("00"); 
  labels[2]=new JLabel("天"); 
  labels[3]=new JLabel("00"); 
  labels[4]=new JLabel("时"); 
  labels[5]=new JLabel("00"); 
  labels[6]=new JLabel("分"); 
  labels[7]=new JLabel("00"); 
  labels[8]=new JLabel("秒"); 
  init(); 
  showMe(); 
} 
public void init() 
{ 
  jp1=new JPanel();                                                                               
  jp2=new JPanel(); 
  jp2.add(labels[0]); 
  for(int i=1;i<labels.length;i++) 
  { 
   jp1.add(labels); 
   if(i%2!=0) 
   { 
    labels.setForeground(Color.red); 
   } 
  } 
  this.add(jp2,BorderLayout.NORTH); 
  this.add(jp1,BorderLayout.CENTER); 
} 
public void showMe() 
{ 
  this.setSize(300,100); 
  this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
  this.setResizable(false); 
  this.setVisible(true); 
} 
public void run() 
{ 
  GregorianCalendar olympic=new GregorianCalendar(2008,7,8,20,8,0); 
  long olympictime=olympic.getTimeInMillis(); 
  while(true){ 
   Calendar now=Calendar.getInstance(); 
   long nowtime=now.getTimeInMillis(); 
   try{ 
   Thread.sleep(1000); 
   }catch(Exception e){ 
     
   } 
   long day=(olympictime-nowtime)/3600/24/1000; 
   long hour=((olympictime-nowtime)/3600000)%24; 
   long minute=((olympictime-nowtime)/60000)%60; 
   long second=((olympictime-nowtime)/1000)%60; 
   labels[1].setText(day+""); 
   labels[3].setText(hour+""); 
   labels[5].setText(minute+""); 
   labels[7].setText(second+""); 
  } 
} 
        public static void main(String[] args) 
        { 
                Runnable runnable=new OlympicTime(); 
                Thread time=new Thread(runnable); 
                time.start(); 
        } 
} 
3.模拟栈 
import java.awt.*; 
import java.awt.event.*; 
import javax.swing.*; 
import javax.swing.event.*; 
public class StackFrame extends JFrame implements ActionListener 
{ 
private JButton newProducer,newConsumer,stopButton; 
private JProgressBar progressBar; 
private JTextArea progressText; 
private JPanel jpsouth; 
private JScrollPane jpcenter; 
public final int MAX_SIZE; 
int count; 
int[] a; 
boolean STOP=false; 
public StackFrame() 
{ 
  MAX_SIZE=100; 
} 
public StackFrame(int size) 
{ 
  super("添加删除进程演示"); 
  newProducer=new JButton("New Producer"); 
  newConsumer=new JButton("New Consumer"); 
  stopButton=new JButton("Stop"); 
  progressBar=new JProgressBar(1,size); 
  progressText=new JTextArea(); 
  jpcenter=new JScrollPane(progressText); 
  jpsouth=new JPanel(); 
  count=0; 
  MAX_SIZE=size; 
  a=new int[size]; 
  init(); 
  showFrame(); 
} 
public void init() 
{ 
  progressBar.setStringPainted(true); 
  progressText.append("This is the progress:\n"); 
  jpsouth.setLayout(new FlowLayout(FlowLayout.LEFT)); 
  jpsouth.add(newProducer); 
  jpsouth.add(newConsumer); 
  jpsouth.add(progressBar); 
  jpsouth.add(stopButton); 
  newProducer.addActionListener(this); 
  newConsumer.addActionListener(this); 
  stopButton.addActionListener(this); 
  this.add(jpcenter,BorderLayout.CENTER); 
  this.add(jpsouth,BorderLayout.SOUTH); 
} 
public void actionPerformed(ActionEvent e) 
{ 
  String command=e.getActionCommand(); 
  if(command.equals("New Producer")) 
  { 
   STOP=false; 
   Runnable push1=this.new Producer(); 
   Thread stackPush1=new Thread(push1); 
   stackPush1.start(); 
  } 
  if(command.equals("New Consumer")) 
  { 
   STOP=false; 
   Runnable pop=this.new Consumer(); 
   Thread stackPop=new Thread(pop); 
   stackPop.start(); 
  } 
  if(command.equals("Stop")||command.equals("Start")) 
  { 
   STOP=true; 
  } 
   
} 
public void showFrame() 
{ 
  this.setSize(600,500); 
  this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
  this.setVisible(true); 
  this.setResizable(false); 
} 
public synchronized void push() 
{ 
  this.progressText.append("Push a data COUNT+"+count+"!\n"); 
  while(count==MAX_SIZE) 
  { 
   this.progressText.append("The stack is full!!!("+count+" elements)"); 
   try 
   { 
    this.wait(); 
   } 
   catch(InterruptedException e) 
   { 
    e.printStackTrace(); 
   } 
  } 
  a[count++]=count; 
  this.progressBar.setValue(count); 
  this.notifyAll();   
} 
public synchronized int pop() 
{ 
  this.progressText.append("Pop a data COUNT+"+count+"!\n"); 
  while(count==0) 
  { 
   this.progressText.append("The stack is empty!!!("+count+" elements)"); 
   this.progressBar.setValue(count); 
   try{ 
    this.wait(); 
   }catch(InterruptedException e){ 
    e.printStackTrace(); 
   } 
  } 
  this.progressBar.setValue(count); 
  this.notifyAll(); 
  return a[--count]; 
} 
class Producer implements Runnable 
{ 
  public void run() 
  { 
   while(true) 
   { 
    if(STOP) 
    { 
     break; 
    }     
    try{ 
     Thread.sleep(300); 
    }catch(Exception e){ 
     e.printStackTrace(); 
    } 
    StackFrame.this.push(); 
   } 
  } 
} 
class Consumer implements Runnable 
{ 
  public void run() 
  { 
   while(true) 
   {     
    if(STOP) 
    { 
     break; 
    } 
    try{ 
     Thread.sleep(400); 
    }catch(Exception e){ 
     e.printStackTrace(); 
    } 
    StackFrame.this.pop(); 
   } 
  } 
} 
public static void main(String[] args) 
{ 
  StackFrame stackFrame=new StackFrame(100); 
} 
} 
分享到:
评论

相关推荐

    Java初学者习题20道

    以下是对20道Java初学者习题的详细解析: 1. Java源文件中最多只能有一个`public`类,这个类的类名必须与文件名保持一致。这是因为Java的类加载机制要求的。 2. 面向对象程序设计的三大特征是封装性、继承性和多态...

    JAVA零基础算法练习题

    这个"零基础配套练习题51道完整版"涵盖了这些基础概念,通过实际的编程练习,可以帮助初学者巩固理论知识,提高实际编程能力。每一道题目都可能涉及不同的算法思想和技巧,例如: 1. **排序算法**:练习可能会要求...

    java试题1000道

    这份“java试题1000道”集合涵盖了丰富的Java学习资源,包括面试题、学习笔记、习题库以及详细的答案,适合Java初学者及进阶者进行自我检测和提升。 在这些文档中,你可以找到以下关键知识点: 1. **Java基础**:...

    Java基础练习代码

    最后,对于Java初学者,理解面向对象编程的基本原则和设计模式也是必不可少的。练习中可能会涉及到单例模式、工厂模式等常见设计模式的实现,这些模式可以提升代码的可维护性和复用性。 总之,"Java基础练习代码...

    java初学者必看。北大青鸟入门教材

    【标题】"java初学者必看。北大青鸟入门教材" 涵盖了Java编程的基础知识,是针对初学者量身定制的学习资料,尤其适合那些希望通过北大青鸟的ACCP6.0课程体系来入门Java编程的学员。北大青鸟作为知名的IT教育机构,其...

    java教程,并且还带有习题(特别适合初学者)

    Java教程是学习编程语言的重要资源,特别是对于初学者而言,它提供了一个系统化的学习路径。本教程专注于Java的基础知识,帮助新手逐步理解并掌握这门强大的面向对象编程语言。 首先,我们要了解Java的核心概念。...

    Java教材课件+练习题.zip

    Java语言概述.pdf、Java实战习题集锦.pdf、Java考试重点汇总.docx 这是一份针对初学者的Java编程教材,旨在帮助零基础的学习者快速掌握Java编程基础,并且为应对相关考试做好准备。这份资源包含多个部分,覆盖了从...

    Java初学必看教程

    《Java初学必看教程》是一本为Java初学者量身打造的全面指南,它深入浅出地介绍了Java编程语言的各个方面,旨在帮助新手快速掌握这门强大的编程工具。本书从Java的历史背景出发,详细讲解了Java语言的核心概念、语法...

    JAVA入门书。初学者必看

    Java编程语言是全球范围内广泛应用的面向对象的编程...书中的实例和练习题会帮助读者巩固所学知识,提升实践能力。对于"JAVA入门必看"的标签,意味着这本书是初学者不容错过的资源,能够引导他们快速进入Java的世界。

    java练习题(附带Thinking In Java电子书)

    在学习Java时,练习题是必不可少的环节。通过做题,你可以加深对语法、数据结构、面向对象编程、异常处理、多线程等核心概念的理解。同时,解决实际问题的能力也会得到提升。配合书籍的习题解答,可以检查自己的理解...

    Java基础模拟题适合于(学过一年的初学者)

    Java是世界上最流行的编程语言之一,尤其在企业级应用开发领域占据主导地位。对于初学者而言,掌握Java基础知识至关重要。这份“Java基础模拟题”恰好为学过一年的初学者提供了绝佳的复习和检验自己技能的资源。下面...

    java基础练习题

    Java编程语言的基础练习题涉及到多个核心概念,这些概念在初学者阶段是非常重要的。下面是对每个程序的详细解析: 1. **菲波拉契数列**(程序1) 菲波拉契数列是一个经典的数学问题,表示的是兔子繁殖的情况。在...

    Java程序设计与数据结构第四章习题答案

    综上所述,"Java程序设计与数据结构第四章习题答案"提供的内容将涵盖上述多个知识点,通过解答这些习题,初学者能够加深对Java语言和数据结构的理解,提高编程能力,并为后续更复杂的编程挑战奠定坚实的基础。

    java语言程序设计基础篇课后习题答案

    本资源“java语言程序设计基础篇课后习题答案”针对的是第八版的《Java语言程序设计基础篇》教材,这是一本旨在帮助初学者掌握Java编程基础知识的教科书。该压缩包中的“kehou”文件可能包含了该教材各章节的课后...

    JAVA基础入门资料,J2SE入门资料,JAVA培训第一课,JAVA初学者资料,JAVA学习者必须知道的问题汇总

    这个压缩包中的资料很可能是对这些主题的详细讲解,包括实例代码、解释和练习题,帮助初学者逐步建立对Java编程的深入理解。通过系统学习和实践,你可以从一个Java新手成长为一个能够熟练解决问题的开发者。无论你是...

    Java编程习题与解答

    本资源“Java编程习题与解答”是专为Java初学者和进阶者设计的学习材料,旨在通过一系列实践性的编程习题,帮助用户巩固和提升Java编程技能。 在学习Java时,理论知识与实践操作相结合至关重要。这个资源包含的习题...

    java课件 初学者的好东东

    "java课件 初学者的好东东"这个标题明确指出这是一份专为Java初学者设计的学习资源,意味着它会涵盖基础概念、语法和编程实践,旨在帮助初学者扎实掌握Java基础知识。 描述中的"Java上课课件"表明这是一系列教学...

    Java学习,if--else练习

    总的来说,理解和熟练运用`if`和`else`是Java初学者的必备技能,它们是构建复杂逻辑和解决实际问题的基础。通过"Java学习,if--else练习"这个资源,学习者可以加深对这一关键概念的理解,为日后的编程实践打下坚实...

    java学习必看PPT

    在"JAVA程序设计教程》电子教案"这个文件名中,我们可以推测这是一份详细的教学材料,可能包含了实例代码、练习题和解决方案,旨在帮助学习者通过实践加深对Java的理解。教案中的每部分都可能与PPT中的章节相对应,...

    Java语言程序设计(第六版)Y. Daniel Liang课后练习偶数号答案

    在偶数号习题中,读者可能会遇到设计简单类和对象的问题,比如创建一个表示学生或动物的类,或者实现一个具有特定功能的对象。 再者,异常处理是Java编程中不可或缺的一部分。Liang可能讲解了try-catch-finally语句...

Global site tag (gtag.js) - Google Analytics