1、1,编写程序,判断给定的某个年份是否是闰年。闰年的判断规则如下:(1)若某个年份能被 4 整除但不能被 100 整除,则是闰年。(2)若某个年份能被 400 整除,则也是闰年。import java.util.Scanner;class Bissextilepublic static void main(String arge)System.out.print(“请输入年份“);int year; /定义输入的年份名字为“year”Scanner scanner = new Scanner(System.in);year = scanner.nextInt();if (year3000)Sys
2、tem.out.println(“年份有误,程序退出!“);System.exit(0);if (year%4=0)else System.out.println(year+“ is not bissextile “);2,给定一个百分制的分数,输出相应的等级。90 分以上 A 级8089 B 级7079 C 级6069 D 级60 分以下 E 级import java.util.Scanner;class Markpublic static void main(String args)System.out.println(“请输入一个分数“);/定义输入的分数为“mark”,且分数会有小数d
3、ouble mark;Scanner scanner = new Scanner(System.in);mark = scanner.nextDouble();/判断是否有输入错误。if(mark100)System.out.println(“输入有误! “);System.exit(0);/*判断分数的等级90 分以上者 A 级, 8089 分者 B 级,7079 分者 C 级, 6069 者 D 级,60 分以下 E级 */if (mark=90) System.out.println(“this mark is grade A “);else if (mark=80) System.ou
4、t.println(“this mark is grade B “);else if (mark=70) System.out.println(“this mark is grade C “);else if (mark=60) System.out.println(“this mark is grade D “);else System.out.println(“this mark is grade E “);3,编写程序求 1+3+5+7+99 的和值。class hepublic static void main(String args)int number = 1; /初始值 1,以后
5、再+2 递增上去int sum = 0;for ( ; number j) break; /此处用 continue 也可以,只是效率低一点System.out.print(“ “+k+“X“+j+“=“+j*k);System.out.println();6、输出所有的水仙花数,把谓水仙花数是指一个数 3 位数,其各各位数字立方和等于其本身,例如: 153 = 1*1*1 + 3*3*3 + 5*5*5 class DafodilNumberpublic static void main(String args)System.out.println(“以下是所有的水仙花数“);int num
6、ber = 100; / 由于水仙花数是三位数,故由 100 开始算起int i, j, k; / i j k 分别为 number 的百位、十位、个位for (int sum; number arrayNumberi)min = arrayNumberi; /求最小值sum += arrayNumberi;System.out.println(“其中 Max=“+max+“,Min=“+min+“,Sum=“+sum+“,Avg=“+sum/10.0);2.定义一个 int 型的一维数组,包含 10 个元素,分别赋值为 110, 然后将数组中的元素都向前移一个位置,即,a0=a1,a1=a2
7、,最后一个元素的值是原来第一个元素的值,然后输出这个数组。3. 定义一个 int 型的一维数组,包含 40 个元素,用来存储每个学员的成绩,循环产生 40 个 0100之间的随机整数,将它们存储到一维数组中,然后统计成绩低于平均分的学员的人数,并输出出来。4. (选做)承上题,将这 40 个成绩按照从高到低的顺序输出出来。5,(选做)编写程序,将一个数组中的元素倒排过来。例如原数组为 1,2,3,4,5;则倒排后数组中的值为 5,4,3,2,1。6,要求定义一个 int 型数组 a,包含 100 个元素,保存 100 个随机的 4 位数。再定义一个int 型数组 b,包含 10 个元素。统计
8、a 数组中的元素对 10 求余等于 0 的个数,保存到 b0中;对 10 求余等于 1 的个数,保存到 b1中, 依此类推。class Remainpublic static void main( String args)int a = new int100;/保存 100 个随机 4 位数到 a 中for (int i = 0; i 1.0E-4|N%2=0|N=N)col-;row+=2; /行列都越界else if (row=N)col = 0; /列越界else if (resultrowcol != 0)col-;row+=2; /有冲突/打印出九宫格for (int i=0; i=
9、N)col = 0; /列越界else if (result2rowcol != 0)col-;row+=2; /有冲突/这方法不可能出现行列两边都越界的情况 ,详情需要数学论证System.out.println();/再次打印出九宫格,以对比验证for (int i=0; i id)return 1;else if (t1.getId() private LinkedList list = new LinkedList();public boolean empty() return list.isEmpty();public E peek() return list.peek(); pub
10、lic 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,
11、表示题号, value 为试题对象Student 类 学生类属性:姓名 一张答卷 一张考卷 考试成绩Question 类 试题类属性:题号 题目描述 若干选项 正确答案提示:若干选项用 ArrayListAnswerSheet 类 答卷类属性:每道题的答案 提示:答卷中每道题的答案用 HashMap 存放,key 为 String,表示题号,value 为学生的答案问题:为 Exam 类添加一个方法,用来为所有学生判卷,并打印成绩排名(名次、姓名、成绩)*/3. /*项目:商品管理系统功能:增删改查 (可按各种属性查)商品属性:名称、价格(两位小数) 、种类*/day17 图形界面1. 计算器
12、/*例题 画出计算器的界面 *界面如下: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.se
13、tHorizontalAlignment(JTextField.RIGHT);/令 text 的文字从右边起text.setEditable(false);/设置文本不可修改,默认可修改(true)f.add(text, BorderLayout.NORTH);/Frame 和 Dialog 的默认布局管理器是 Border LayoutButtonActionListener listener = new ButtonActionListener(text);/事件反应在 text 中JPanel buttonPanel = new JPanel();/设法把计算器键盘放到这个 Jpanel
14、 按钮上String op = “123+456-789*0.=/“;GridLayout gridlayout = new GridLayout(4,4,10,10);buttonPanel.setLayout(gridlayout);/把计算器键盘放到 buttonPanel 按钮上for(int i=0; iop.length(); i+)char c = op.charAt(i); /拿到字符串的第 i 个字符JButton b = new JButton(c+“);/把字符放到按钮上b.addActionListener(listener);/在按钮上放置监听器,每次按都会有反应bu
15、ttonPanel.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 ActionListenerprivate JTextField textFie
16、ld;public ButtonActionListener(JTextField textField) this.textField = textField;public void actionPerformed(ActionEvent e) /必须覆盖它的 actionPerformed()textField.append(“哈哈,放了几个字n“);/*未实现计算器的具体功能 */2. 扫雷游戏3. 俄罗斯方块day19 多线程写两个线程,一个线程打印 152,另一个线程打印字母 A-Z。打印顺序为12A34B56C5152Z。要求用线程间的通信。注:分别给两个对象构造一个对象 o,数字每
17、打印两个或字母每打印一个就执行 o.wait()。在 o.wait()之前不要忘了写 o.notify()。class Testpublic static void main(String args) Printer p = new Printer();Thread t1 = new NumberPrinter(p);Thread t2 = new LetterPrinter(p);t1.start();t2.start(); class Printerprivate int index = 1;/设为 1,方便计算 3 的倍数/打印数字的构造方法,每打印两个数字,等待打印一个字母public
18、 synchronized void print(int i)while(index%3=0)trywait();catch(Exception e)System.out.print(“ “+i);index+;notifyAll();/打印字母,每打印一个字母,等待打印两个数字public synchronized void print(char c)while(index%3!=0)trywait();catch(Exception e)System.out.print(“ “+c);index+;notifyAll(); /打印数字的线程class NumberPrinter exten
19、ds Threadprivate 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 Threadprivate 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;*/