首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

牛刀小试

2012-11-07 
小试牛刀1,编写程序,判断给定的某个年份是否是闰年。闰年的判断规则如下:(1)若某个年份能被4整除但不能被10

小试牛刀

1,编写程序,判断给定的某个年份是否是闰年。
      闰年的判断规则如下:
      (1)若某个年份能被4整除但不能被100整除,则是闰年。
      (2)若某个年份能被400整除,则也是闰年。




2,给定一个百分制的分数,输出相应的等级。
        90分以上        A级
        80~89          B级
        70~79          C级
        60~69          D级
        60分以下        E级




4、利用for循环打印 9*9  表?
1*1=1
1*2=2  2*2=4
1*3=3  2*3=6  3*3=9
1*4=4  2*4=8  3*4=12  4*4=16
1*5=5  2*5=10  3*5=15  4*5=20  5*5=25
1*6=6  2*6=12  3*6=18  4*6=24  5*6=30  6*6=36
1*7=7  2*7=14  3*7=21  4*7=28  5*7=35  6*7=42  7*7=49
1*8=8  2*8=16  3*8=24  4*8=32  5*8=40  6*8=48  7*8=56  8*8=64
1*9=9  2*9=18  3*9=27  4*9=36  5*9=45  6*9=54  7*9=63  8*9=72  9*9=81




7、求  a+aa+aaa+.......+aaaaaaaaa=?
      其中a为1至9之中的一个数,项数也要可以指定。



16、歌德巴赫猜想,任何一个大于六的偶数可以拆分成两个质数的和
  打印出所有的可能









        }
    }
}
//由于 HashSet 不能重复,所以只有10个数在里面,按哈希排序
2 4 9 8 6 1 3 7 5 0







/*
* 测试TreeSet 的比较器,
* 在有自己的比较器的情况下,如何实现Comparable接口
*/

import java.util.*;
class Teacher{
    int id;
    String name;
    int age;   
    public Teacher() {}
    public Teacher(int id, String name, int age) {
        this.id = id;
        this.name = name;
        this.age = age;
    }
    public int getId() {    return id;    }
    public void setId(int id) {this.id = id;    }
    public String getName() {    return name;}
    public void setName(String name) {    this.name = name;}
    public int getAge() {return age;}   
    public void setAge(int age) {this.age = age;}
   
    public int TeacherComparator(Object o){
        Teacher t1 = (Teacher) o;
        if(t1.getId() > id){return 1;}
        else if (t1.getId() < id){return -1;}
        return 0;
    }
}
class TreeSet{
   
}

class Test {
    public static void main(String[] args) {
        String s1 = new String("aaa");
        String s2 = new String("bbb");
        String s3 = new String("aaa");
        System.out.println(s1==s3);
        System.out.println(s1.equals(s3));
       
        HashSet hs = new HashSet();
        hs.add(s1);
        hs.add(s2);
        hs.add(s3);
        Iterator it = hs.iterator();
        while(it.hasNext()){
            System.out.println(it.next());
        }
        System.out.printf("%x\n",s1.hashCode());
        System.out.printf("%x\n",s2.hashCode());
        System.out.printf("%x\n",s3.hashCode());
    }
}



1. 在Map中,以name作Key,以Student类 作Velue,写一个HashMap
import java.util.*;
class Student{
    int id;
    String name;
    int age;   
    public Student() {}
    public Student( int id, String name, int age) {
        this.id = id;
        this.name = name;
        this.age = age;
    }
    public int getId() {return id;}
    public void setId(int id) {this.id = id;}
    public String getName() {return name;}
    public void setName(String name) {this.name = name;}
    public int getAge() {return age;}   
    public void setAge(int age) {this.age = age;}
}

class TestHashMap{
    public static void main(String[] args) {
        HashMap hm = new HashMap();
        Student s1 = new Student(1,"jacky",19);
        hm.put("jacky",s1);
        hm.put("tom",new Student(2,"tom",21));
        hm.put("kitty",new Student(3,"kitty",17));
       
        Iterator it = hm.keySet().iterator();
        while(it.hasNext()){
            Object key =  it.next();
            Student value = (Student) hm.get(key);
            System.out.println(key+":id="+value.id+",age="+value.age);
        }
        System.out.println("=============================");
       
        //比较 KeySet() 和 entrySet() 两种迭代方式
        for(Iterator i1 = hm.entrySet().iterator(); i1.hasNext(); )
        { Map.Entry me = (Map.Entry) i1.next();
       Student s = (Student) me.getValue();
            System.out.println(me.getKey()+": id="+s.id+" age="+s.age);
        }       
    }
}




day13 homework
1.
/**********************************************************************************
自己写一个栈:     ( 先进后出 )
     建议底层用LinkedList实现
参照 java.util.Stack
方法:  boolean empty()  测试堆栈是否为空。
    E  peek()        查看栈顶对象而不移除它。
    E  pop()         移除栈顶对象并作为此函数的值返回该对象。
    E  push(E item)  把项压入栈顶。
    int     search(Object o)     返回对象在栈中的位置,以 1 为基数。
***************************************************************************************/
//不能用继承,因为它破坏封装。只需调用即可
import java.util.LinkedList;
class MyStack<E>{
    private LinkedList<E> list = new LinkedList<E>();
    public  boolean empty()     {return list.isEmpty();}
    public  E peek()            {return list.peek();   }
    public  E pop()             {return list.poll();   }
    public  void push(E o)      {list.addFirst(o);     }   
   
    //int    indexOf(Object o) 返回此列表中首次出现的指定元素的索引,如果此列表中不包含该元素,则返回 -1。
    public  int search(Object o){return list.indexOf(o);}
}



2.
/***************************************************************************************
定义以下类,完成后面的问题,并验证。
Exam类   考试类
属性: 若干学生  一张考卷
提示:学生采用HashSet存放

Paper类   考卷类 
属性:若干试题
提示:试题采用HashMap存放,key为String,表示题号,value为试题对象

Student类     学生类
属性:姓名   一张答卷   一张考卷  考试成绩

Question类    试题类
属性:题号 题目描述    若干选项    正确答案
提示:若干选项用ArrayList

AnswerSheet类    答卷类
属性:每道题的答案   
提示:答卷中每道题的答案用HashMap存放,key为String,表示题号,value为学生的答案

问题:为Exam类添加一个方法,用来为所有学生判卷,并打印成绩排名(名次、姓名、成绩)
***************************************************************************************/

















3.
/***************************************************************************************
项目:商品管理系统
功能:增删改查 (可按各种属性查)
商品属性:名称、价格(两位小数)、种类
***************************************************************************************/





















day17 图形界面
1. 计算器
/*****************例题 画出计算器的界面*****************************
界面如下:
     1   2   3   +
     4   5   6   -
     7   8   9   *
     0   .   =   /
*******************/
import java.awt.*;
import javax.swing.*;

class Calculator {
   public static void main(String[] args){
      JTextField text = new JTextField();
      JFrame f = new JFrame("计算器");
      Font font = new Font("宋体", Font.BOLD, 25);//"宋体"想写成默认,则写“null”
      text.setFont(font); //定义字体
      text.setHorizontalAlignment(JTextField.RIGHT);//令text的文字从右边起
      text.setEditable(false);//设置文本不可修改,默认可修改(true)
      f.add(text, BorderLayout.NORTH);//Frame和Dialog的默认布局管理器是Border Layout
      ButtonActionListener listener = new ButtonActionListener(text);//事件反应在text中
      JPanel buttonPanel = new JPanel();//设法把计算器键盘放到这个Jpanel按钮上
      String op = "123+456-789*0.=/";
      GridLayout gridlayout = new GridLayout(4,4,10,10);
      buttonPanel.setLayout(gridlayout);//把计算器键盘放到buttonPanel按钮上
      for(int i=0; i<op.length(); i++){
          char c = op.charAt(i); //拿到字符串的第i个字符
          JButton b = new JButton(c+"");//把字符放到按钮上
          b.addActionListener(listener);//在按钮上放置监听器,每次按都会有反应
          buttonPanel.add(b);//把按钮放到buttonPanel上
      }//这个循环很值得学习,很常用
      f.add(buttonPanel/*, BorderLayout.CENTER*/);  //默认添加到CENTER位置
      f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      f.setSize(300, 250);
      f.setVisible(true);//这句要放到最后,等事件完成后再显示
}}

//监听者
class ButtonActionListener implements ActionListener{
    private JTextField textField;
    public ButtonActionListener(JTextField textField) {
        this.textField = textField;
    }
    public void actionPerformed(ActionEvent e) {//必须覆盖它的actionPerformed()
       
        textField.append("哈哈,放了几个字\n");
}}
/*********************未实现计算器的具体功能*******************************/



2. 扫雷游戏



3. 俄罗斯方块









day19 多线程
写两个线程,一个线程打印 1~52,另一个线程打印字母A-Z。打印顺序为12A34B56C……5152Z。要求用线程间的通信。
       注:分别给两个对象构造一个对象o,数字每打印两个或字母每打印一个就执行o.wait()。
       在o.wait()之前不要忘了写o.notify()。
class Test{
    public static void main(String[] args) {
        Printer p = new Printer();
        Thread t1 = new NumberPrinter(p);
        Thread t2 = new LetterPrinter(p);
        t1.start();
        t2.start();
    }   
}
class Printer{
    private int index = 1;//设为1,方便计算3的倍数
    //打印数字的构造方法,每打印两个数字,等待打印一个字母
    public synchronized void print(int i){
        while(index%3==0){try{wait();}catch(Exception e){}}
        System.out.print(" "+i);
        index++;
        notifyAll();
    }
    //打印字母,每打印一个字母,等待打印两个数字
    public synchronized void print(char c){
        while(index%3!=0){try{wait();}catch(Exception e){}}
        System.out.print(" "+c);
        index++;
        notifyAll();
    }   
}
//打印数字的线程
class NumberPrinter extends Thread{
    private Printer p;
    public NumberPrinter(Printer p){this.p = p;}
    public void run(){
        for(int i = 1; i<=52; i++){
            p.print(i);
        }
    }
}
//打印字母的线程
class LetterPrinter extends Thread{
    private Printer p;
    public LetterPrinter(Printer p){this.p = p;}
    public void run(){
        for(char c='A'; c<='Z'; c++){
            p.print(c);
        }
    }
}
/*如果这题中,想保存需要打印的结果,可在Printer类里定义一个成员变量
String s = ""; //不写“”的话是null,null跟没有东西是不一样的,它会把null当成字符 =_=
然后在两个print()方法里面,while循环后分别加上 s = s + " "+i; 以及 s = s +" "+ c;*/








热点排行