练习一:倒计时程序(通过线程完成)
package day01; import java.awt.FlowLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.*; public class Demo2 extends Thread implements ActionListener { JLabel jl = new JLabel("开始考试..."); public Demo2(){ JFrame jf = new JFrame("Demo2"); jf.setLayout(new FlowLayout());//设置窗口的布局 jf.setSize(300,200);//设置窗口大小 jf.setVisible(true);//设置窗口为可显示的 jf.setResizable(false);//设置窗口不能调整大小 jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //设置窗口退出及关闭程序 jf.add(jl); JButton jb = new JButton("开始"); jf.add(jb); jb.addActionListener(this); } public static void main(String[] args) { Demo2 test = new Demo2(); } @Override public void run() { super.run(); int h=0,m=0,s=0; for(int i=5000;i>=0;i--){ h=i/3600; m=i%3600/60; s=i%60; try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } jl.setText(h+"小时"+m+"分钟"+s+"秒"); } } public void actionPerformed(ActionEvent e) { this.start(); // 启动本类中的线程 } }
练习二:九九乘法表
package day01; /** * 9*9乘法表 * @author lvxia * */ public class Demo3 { public static void main(String[] args) { System.out.println("九九乘法表:"); for(int i=1;i<=9;i++){ for(int j=1;j<=i;j++){ System.out.print(i+"*"+j+"="+(i*j)+" "); } System.out.println(); } } }
练习三:打印古诗“枫桥夜泊”
package day01; /** * 月落乌啼霜满天 江枫渔火对愁眠 姑苏城外寒山寺 夜半钟声到客船 * * 将枫桥夜泊这首诗存放到二维数组中 打印这首诗 1)正常打印 2)古文打印 * * @author lvxia * */ public class Demo4 { public static void main(String[] args) { char[][] test4 ={{'月','落','乌','啼','霜','满','天',','}, {'江','枫','渔','火','对','愁','眠','.'}, {'姑','苏','城','外','寒','山','寺',','}, {'夜','半','钟','声','到','客','船','.'}} ; //建立一个String类型的亦可只不过需要用双引号,不过Java中的char类型也是占有2个字节 System.out.println("正常打印"); for(int i=0;i<test4.length;i++){ for(int j=0;j<test4[i].length;j++){ System.out.print(test4[i][j]); } System.out.println(); } System.out.println(); System.out.println("古文打印"); for(int i=0;i<=6;i++){ for(int j=3;j>=0;j--){ System.out.print(test4[j][i]); } System.out.println(); } } }
练习三:猜数字游戏
生成随机数的知识补充:
1>生成随机数
Random random = new Random();
Random random = new Random(100);//指定种子数100
random调用不同的方法,获得随机数。
如果2个Random对象使用相同的种子(比如都是100),并且以相同的顺序调用相同的函数,那它们返回值完全相同。如下面代码中两个Random对象的输出完全相同
import java.util.*; class TestRandom { public static void main(String[] args) { Random random1 = new Random(100); System.out.println(random1.nextInt()); System.out.println(random1.nextFloat()); System.out.println(random1.nextBoolean()); Random random2 = new Random(100); System.out.println(random2.nextInt()); System.out.println(random2.nextFloat()); System.out.println(random2.nextBoolean()); } }
2>指定范围内的随机数
随机数控制在某个范围内,使用模数运算符%
import java.util.*; class TestRandom { public static void main(String[] args) { Random random = new Random(); for(int i = 0; i < 10;i++) { System.out.println(Math.abs(random.nextInt())%10); } } }
获得的随机数有正有负的,用Math.abs使获取数据范围为非负数
3>获取指定范围内的不重复随机数
import java.util.*; class TestRandom { public static void main(String[] args) { int[] intRet = new int[6]; int intRd = 0; //存放随机数 int count = 0; //记录生成的随机数个数 int flag = 0; //是否已经生成过标志 while(count<6){ Random rdm = new Random(System.currentTimeMillis()); intRd = Math.abs(rdm.nextInt())%32+1; for(int i=0;i<count;i++){ if(intRet[i]==intRd){ flag = 1; break; }else{ flag = 0; } } if(flag==0){ intRet[count] = intRd; count++; } } for(int t=0;t<6;t++){ System.out.println(t+"->"+intRet[t]); } } }
猜数字游戏如下:
package day01; import java.util.Random; import java.util.Scanner; /** * 猜数字游戏 随机生成一个100以内的随机数 在控制台上输入你猜测的数字 提示大、小、正确;跳出循环 * 只能猜测10次,当第10次的时候,提示太笨了,下次再来吧 * * @author lvxia * */ public class Demo5 { public static void main(String[] args) { Scanner in = new Scanner(System.in); int value = (int)(Math.random()*100); //仅仅调用random的方法生成的是大于等于0小于1的随机数,乘以100之后生成的是大于等于1小于100的随机数,再强制类型转换为Int //另一种生成随机数方法 //Random random = new Random(); //int a = random.nextInt(100); //>=0 <100 java中区间都为前闭后开 //System.out.println("随机生成数为:"+value); boolean flag=false; System.out.println("测试开始"); for(int i=0;i<10;i++){ if (!flag) { System.out.print("请您输入您所猜测的数值(1-100):"); int cc = in.nextInt(); if(cc==value){ System.out.println("正确哈!"); flag=true; } else if(cc>value){ System.out.println("您猜大了"); }else if(cc<value){ System.out.println("您猜小了"); } }else break; //if else if 语句 是一个条件判断语句 如果前面if执行了 后面的else if不用执行 //for循环中先做循环体内的代码,再判断控制语句和i++操作 } if(flag=false){ System.out.println("唉...太笨了,下次再来吧!"); } } }