1.两种输入方式
import java.io.*;
public class fh1{
public static void main(String[] args)throws IOException{
String str1,str2;
double i,j;
BufferedReader buf;
System.out.print("请输入第一个数:");
buf = new BufferedReader(new InputStreamReader(System.in));
str1 = buf.readLine();
i = Double.parseDouble(str1);
System.out.print("请输入第二个数:");
str2 = buf.readLine();
j = Double.parseDouble(str2);
System.out.println("这两个数的乘积为:"+i*j);
}
}
import java.util.*;
class fh2{
public static void main(String[] args){
int n=0,sum=0;
Scanner avg = new Scanner(System.in);
System.out.print("请输入数:");
while(avg.hasNextDouble()){
/*hasNextDouble表示判断输入的值是是否为double类型,以空格或回车分隔*/
double d = avg.nextDouble();
//nextDouble表示判断输入的值是否为double类型,同时按回车结束
n++;
sum+=d;
}
System.out.println("输入了"+n+"组数\n"+"和为"+sum+"\n"+"平均值为"+sum/(double)n);
}
}
2.运算符
bool||(x++=3)&(x==2);//true
bool||(++x=3)&(x==2);//false
x*=3+5;//16
24>>2*x;//1 24/2^4,int类型直接去掉小数部分,结果为1
3.
(1)买大买小
import java.util.*;
public class Choose1{
public static void main(String[] args){
//Ramdom rand = new Random();
int flag1=1;
System.out.println("游戏开始");
while(flag1==1){
int number=(int)(Math.random()*6+1);
Scanner reader = new Scanner(System.in);
System.out.print("请输入你的猜测(买大或者买小):");
//int count = reader.nextInt();
String choose = reader.nextLine();
System.out.println("本次摇中的点数为"+number);
if((number<=3 && choose.equals("小"))||(number >3 && choose.equals("大"))){
System.out.println("恭喜猜对了!");
}
else{
System.out.println("很遗憾猜错了!");
}
System.out.println("continue?(1/0)");
flag1=reader.nextInt();
}
}
}
(2)判断成绩switch语句
import java.util.*;
public class Judgescore{
public static void main(String[] args){
int flag = 1;
Scanner score = new Scanner(System.in);
while(flag==1){
System.out.print("请输入成绩(0到100):");
double myscore = score.nextDouble();
if(myscore>100 || myscore<0){
System.out.println("请输入正确的成绩!");
continue;
}
switch((int)myscore/10){
case 10:
System.out.println("哇偶,你是学霸!");
break;
case 9:
System.out.println("优秀");
break;
case 8:
System.out.println("良好");
break;
case 7:
System.out.println("中等");
break;
case 6:
System.out.println("及格");
break;
default:
System.out.println("不及格,好好学习吧");
break;
}
System.out.println("\ncontinue?(1/0)");
flag=score.nextInt();
}
}
}
(3)水仙花数
import java.util.*;
import java.math.*;
public class narcissusNum{
public static void main(String[] args){
int a,b,c;
System.out.println("三位的水仙花数如下:");
for(int i = 100 ; i <= 999; i++ ){
a = i/100; //百位
b = (i-a*100)/10; //十位
c = (i-a*100-b*10);//个位
if((Math.pow(a,3)+Math.pow(b,3)+Math.pow(c,3))==i){
System.out.println(i);
}
}
}
}
(4)判断是几位数
import java.util.*;
public class Number{
public static void main(String[] args){
int number = 0,d5,d4,d3,d2,d1;
Scanner reader = new Scanner(System.in);
int flag = 1;
while(flag == 1){
System.out.println("请输入一个1到99999的数:");
number = reader.nextInt();
if(number>=1 && number<=99999){
d5 = number/10000;
d4 = (number - d5*10000)/1000;
d3 = (number - d5*10000 - d4*1000)/100;
d2 = number%100/10;
d1 = number%10;
}
if(number>=10000 && number<=99999){
System.out.println(number + "是5位数");
}
else if(number>=1000 && number<=9999){
System.out.println(number + "是4位数");
}
else if(number>=100 && number<=999){
System.out.println(number + "是3位数");
}
else if(number>=10 && number<=99){
System.out.println(number + "是2位数");
}
else if(number>=0 && number<=9){
System.out.println(number + "是1位数");
}
else{
System.out.println("输入有误!");
}
System.out.println("\ncontinue?(1/0)");
flag=reader.nextInt();
}
}
}
4.
(1)交换数组
public class DemoArray{
public static void printArray(int[] a){
for(int i=0;i<a.length;i++){
System.out.print(a[i]+",");
}
}
public static void main(String[] args) {
int[] a={1,2,3};
int[] b={4,5,6,7};
System.out.println("交换前数组:");
System.out.print("a:");
printArray(a);
System.out.println();
System.out.print("b:");
printArray(b);
System.out.println();
int[] c=a;
a=b;
b=c;
System.out.println("交换后数组:");
System.out.print("a:");
printArray(a);
System.out.println();
System.out.print("b:");
printArray(b);
}
}
(2)两点距离
import java.io.IOException;
import java.util.Scanner;
class Point {
double x,y;
Point(double x,double y){
this.x=x;
this.y=y;
}
double distance(Point p2){
return Math.sqrt(Math.pow((this.x-p2.x),2)+Math.pow((this.y-p2.y),2));
}
}
class Test{
public static void main(String[] args)throws IOException {
Point p1,p2;
double x,y;
Scanner reader = new Scanner(System.in);
System.out.println("请输入第一个点的x值和y值:");
x=reader.nextDouble();
y=reader.nextDouble();
p1=new Point(x,y);
System.out.println("请输入第二个点的x值和y值:");
x=reader.nextDouble();
y=reader.nextDouble();
p2=new Point(x,y);
System.out.println("这两个点的距离为"+p1.distance(p2));
reader.close();
}
}
(3)画星星(类似金字塔)
import java.io.IOException;
import java.util.Scanner;
public class TestStar {
public static void drawStar(int line, int flag){
/**方法一 */
if(flag==1){
for(int i=1;i<=line;i++){
for(int k=1;k<=line-i;k++){
System.out.print(" ");
}
for(int j=1;j<=i;j++){
System.out.print("*");
}
System.out.println();
}
}
else if(flag==0){
for(int i=1;i<=line;i++){
for(int j=1;j<=i;j++){
System.out.print("*");
}
System.out.println();
}
}
/**方法二 */
/*for(int i=1;i<=line;i++){
if(flag==1){
for(int k=1;k<=line-i;k++){
System.out.print(" ");
}
}
for(int j=1;j<=i;j++){
System.out.print("*");
}
System.out.println();
}*/
}
public static void main(String[] args)throws IOException{
System.out.println("请输入行数:");
Scanner num=new Scanner(System.in);
int n=num.nextInt();
System.out.println("靠左(0)or靠右(1)");
int flag=num.nextInt();
TestStar.drawStar(n,flag);
num.close();
}
}
5
(1)分离数组
public class Divide {
public static int[][] divideArray(int[] a){
int max=a[0],flag=0;;
for(int i=0;i<a.length;i++){
if(a[i]>=max){
max=a[i];
flag=i;
}
}
int[] a1=new int[flag+1];
int[] a2=new int[a.length-flag-1];
for(int i=0;i<a1.length;i++){
a1[i]=a[i];
}
for(int i=0;i<a2.length;i++){
a2[i]=a[flag+i+1];
}
return new int[][] {a1,a2};
}
public static void main(String[] args) {
int[] a={18,20,56,35,58,1,30,21};
int[][] count=divideArray(a);
for(int p:count[0]){
System.out.print(p+",");
}
System.out.println();
for(int p:count[1]){
System.out.print(p+",");
}
}
}
(2)找数组中最大值和最小值
import java.io.IOException;
import java.util.*;
public class FindArrayMaxAndMin{
public static int[] findMaxAndMin(int[] a){
int max=a[0],min=a[0];
for(int i=1;i<a.length;i++){
if(a[i]>=max){
max=a[i];
}
if(a[i]<=min){
min=a[i];
}
}
return new int[] {max,min};
}
public static void main(String[] args){
Scanner arr=new Scanner(System.in);
int a[];
a=new int[10];
System.out.println("请输入10个整数");
for(int i=0;i<10;i++){
a[i]=arr.nextInt();
}
int[] flag=findMaxAndMin(a);
System.out.println("最大值为"+flag[0]+",最小值为"+flag[1]);
arr.close();
}
}
(3)查找数据
import java.io.IOException;
import java.util.Scanner;
public class findBydata {
public static boolean findData(int[] a,int p){
for(int i:a){
if(i==p){
return true;
}
}
return false;
}
public static void main(String[] args){
Scanner reader = new Scanner(System.in);
int[] a={1,2,3,4,5,6};
System.out.println("请输入要查找的数:");
int p=reader.nextInt();
if(findData(a, p)){
System.out.println(p+"在该数组内");
}
else{
System.out.println(p+"不在该数组内");
}
reader.close();
}
}
6.去除零元素
import java.io.IOException;
import java.util.*;
public class ArrayDemo {
public static void main(String[] args){
Scanner reader = new Scanner(System.in);
int a[]=new int[10];
System.out.println("请输入10个数:");
for(int i=0;i<a.length;i++){
a[i]=reader.nextInt();
}
System.out.println("把零元素去掉之后:");
int[] b=deletezero(a);
for(int i=0;i<b.length;i++){
System.out.print(b[i]+" ");
}
reader.close();
}
//去除数组零元素方法
static int[] deletezero(int[] a){
int count=0;//统计0元素个数
int[] b=new int[a.length];
for(int i=0;i<a.length;i++){
int j=i-count;
if(a[j+count]!=0){
b[j]=a[j+count];
}
else{
count++;
}
}
int[] c = new int[a.length-count];
for(int i= 0;i<c.length;i++){
c[i]=b[i];
}
return c;
}
}
7.计算器
import java.util.Scanner;
public class Calculator{
public double additionMethod(double m,double n){
double p=m+n;
System.out.println(m+"+"+n+"="+p);
return p;
}
public double subtractionMethod(double m,double n){
double p=m-n;
System.out.println(m+"-"+n+"="+p);
return p;
}
public double multiplicationMethod(double m,double n){
double p=m*n;
System.out.println(m+"*"+n+"="+p);
return p;
}
public double divisionMethod(double m,double n){
double p=m/n;
System.out.println(m+"/"+n+"="+p);
return p;
}
public void calculator(){
int count=1;
int flag1=1;
Scanner reader=new Scanner(System.in);
System.out.println("------计算器小程序------");
while(true){
System.out.println("请输入第一个数:");
double m= reader.nextDouble();
while(true){
System.out.println("请输入操作:\n1.+\t2.-\t3.*\t4./");
int flag=reader.nextInt();
System.out.println("请输入第二个数:");
double n= reader.nextDouble();
switch(flag){
case 1:m=additionMethod(m, n);break;
case 2:m=subtractionMethod(m, n);break;
case 3:m=multiplicationMethod(m, n);break;
case 4:
if(n==0){
System.out.println("除数不能为零!");
}else{
m=divisionMethod(m, n);
}
break;
default:System.out.println("请输入正确的操作!");
}
System.out.println("是否承接该答案"+m+"继续运算?(1/0)");
count = reader.nextInt();
if(count==0){
break;
}
}
System.out.println("再来一次or退出?(1/0)");
flag1 = reader.nextInt();
if(flag1==0){
break;
}
}
reader.close();
}
}
public class MainEnter {
public static void main(String[] args) {
Calculator cpu = new Calculator();
cpu.calculator();
}
}
8.貌似是排序?
主类
public class Test {
public static void main(String[] args) {
CosmeticsManager cm=new CosmeticsManager();
cm.add(new Cosmetic("香奈儿", "进口", 1000));
cm.add(new Cosmetic("Mac", "国产", 300));
cm.add(new Cosmetic("AMD", "进口", 2500));
cm.add(new Cosmetic("Sekiro", "进口", 268));
cm.add(new Cosmetic("光明记忆", "国产", 30));
cm.printInfo();
System.out.println("----------华丽丽的分界线----------");
SortCosmeticManager cm1=new SortCosmeticManager();
cm1.add(new Cosmetic("香奈儿", "进口", 1000));
cm1.add(new Cosmetic("Mac", "国产", 300));
cm1.add(new Cosmetic("AMD", "进口", 2500));
cm1.add(new Cosmetic("Sekiro", "进口", 268));
cm1.add(new Cosmetic("光明记忆", "国产", 30));
cm1.printInfo();
System.out.println("----------华丽丽的分界线----------");
ImportCosmeticManager cm2=new ImportCosmeticManager();
cm2.add(new Cosmetic("香奈儿", "进口", 1000));
cm2.add(new Cosmetic("Mac", "国产", 300));
cm2.add(new Cosmetic("AMD", "进口", 2500));
cm2.add(new Cosmetic("Sekiro", "进口", 268));
cm2.add(new Cosmetic("光明记忆", "国产", 30));
cm2.printInfo();
}
}
化妆品类
class Cosmetic{
private String name;
private int price;
private String type;
public Cosmetic(String name,String type,int price){
this.name=name;
this.type=type;
this.price=price;
}
public String getInfo(){
return "name="+name+",type="+type+",price="+price;
}
public void setName(String name){
this.name=name;
}
public String getName(){
return this.name;
}
public void setType(String type){
this.type=type;
}
public String getType(){
return this.type;
}
public void setPrice(int price){
this.price=price;
}
public int getPrice(){
return this.price;
}
}
管理化妆品类(类似数组)
import java.util.Arrays;
public class CosmeticsManager {
protected Cosmetic[] cs = new Cosmetic[4];
protected int count=0;
// 进货
public void add(Cosmetic c){
// int size=cs.length;
if(count>=cs.length){
int newlen=cs.length+1;
cs=Arrays.copyOf(cs, newlen);
}
cs[count]=c;
count++;
}
public void printInfo(){
for (Cosmetic cosmetic : cs) {
System.out.println(cosmetic.getInfo());
}
}
}
筛选出进口化妆品
public class ImportCosmeticManager extends CosmeticsManager{
public void printInfo(){
for(int i=0;i<count;i++){
if("进口".equals(cs[i].getType())){
System.out.println(cs[i].getInfo());
}
}
}
}
根据价格递增排序
import java.util.Arrays;
public class SortCosmeticManager extends CosmeticsManager{
public void printInfo(){
Cosmetic[] temp=Arrays.copyOf(cs, count);
Cosmetic c=null;
for(int i=0;i<temp.length-1;i++){
for(int j=0;j<temp.length-i-1;j++){
if(temp[j].getPrice()>temp[j+1].getPrice()){
c=temp[j];
temp[j]=temp[j+1];
temp[j+1]=c;
}
}
}
for (Cosmetic cosmetic : temp) {
System.out.println(cosmetic.getInfo());
}
}
}
9.依次放置不同材质窗户(可能)
public abstract class Window {
double width;
double height;
public abstract String getMaterial();
public void setWidth(double w){
width=w;
}
public void setHeight(double h){
height=h;
}
public double getWidth(){
return width;
}
public double getHeight(){
return height;
}
}
class Building{
int windowNumber=100;
double width=109.98;
double height=156.88;
Window[] window;
Building(){
window=new Window[windowNumber];
}
Building(int n){
windowNumber=n;
window=new Window[windowNumber];
}
public void use(Window[] w){
for(int i=0;i<w.length;i++){
boolean bool=Math.abs(w[i].getWidth()-width)<=1e-2 && Math.abs(w[i].getHeight()-height)<=1e-1;
if(bool==true){
window[i]=w[i];
}
}
}
public void showWindow(){
for(int i=0;i<window.length;i++){
if(window[i]!=null){
System.out.println("第"+(i+1)+"扇窗户是:"+window[i].getMaterial()+"材质的");
}else{
System.out.println("该位置没有窗户!");
}
}
}
}
class WoodWinow extends Window{
public String getMaterial(){
return "木质窗户";
}
}
class IronWindow extends Window{
public String getMaterial(){
return "铁制窗户材质";
}
}
class AluminumWindow extends Window{
public String getMaterial(){
return "铝合金窗户";
}
}
class demo{
public static void main(String[] args) {
Building schoolBuilding;
int m=7;
schoolBuilding=new Building(m);
Window[] w=new Window[m];
for(int i=0;i<m;i++){
if(i%3==0){
w[i]=new WoodWinow();
w[i].setWidth(109.98);
w[i].setHeight(156.89);
}else if(i%3==1){
w[i]=new IronWindow();
w[i].setWidth(109.98);
w[i].setHeight(156.89);
}else if(i%3==2){
w[i]=new AluminumWindow();
w[i].setWidth(109.98);
w[i].setHeight(156.89);
}
}
schoolBuilding.use(w);
schoolBuilding.showWindow();
}
}
10.双色球
import java.util.Arrays;
import java.util.Random;
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
int[] userRedBall=new int[6];
int[] sysRedBall=new int[6];
int userBlueBall=0;
int sysBlueBall=0;
int redCount=0;
int blueCount=0;
int[] redBall=new int[33];
// int[] blueBall=new int[16];
for(int i=0;i<redBall.length;i++){
redBall[i]=i+1;
}
System.out.println("双色球游戏开始,good luck!");
System.out.println("请问是机选还是手选号码(1.机选,2.手选)?");
Scanner input=new Scanner(System.in);
Random r=new Random();
boolean flag=true;
while(flag){
int isAuto=input.nextInt();
switch(isAuto){
case 1:
computerSelection(redBall,userRedBall);
userBlueBall=r.nextInt(16)+1;
flag=false;
break;
case 2:
System.out.println("请选择6个红球号(1-33):");
for(int i=0;i<userRedBall.length;i++){
userRedBall[i]=input.nextInt();
}
System.out.println("请选择1个蓝球号(1-16):");
userBlueBall=input.nextInt();
flag=false;
break;
default:
System.out.println("请问是机选还是手选号码(1.机选,2.手选)?");
}
}
computerSelection(redBall,sysRedBall);
sysBlueBall=r.nextInt(16)+1;
for(int i=0;i<userRedBall.length;i++){
for(int j=0;j<sysRedBall.length-redCount;j++){
int temp=sysRedBall[i];
if(userRedBall[i]==sysRedBall[j]){
sysRedBall[j]=sysRedBall[sysRedBall.length-1-redCount];
sysRedBall[sysRedBall.length-1-redCount]=temp;
redCount++;
}
}
}
if(userBlueBall==sysBlueBall){
blueCount++;
}
if(blueCount==0&&redCount<=3){
System.out.println("没中奖");
}else if(blueCount==1&&redCount<3){
System.out.println("恭喜,中了六等奖!");
}else if((blueCount==1 && redCount==3)||(blueCount==0 && redCount==4)){
System.out.println("恭喜,中了五等奖!");
}else if((blueCount==1 && redCount==4)||(blueCount==0 && redCount==5)){
System.out.println("恭喜,中了四等奖!");
}else if(blueCount==1 && redCount==5){
System.out.println("恭喜,中了三等奖!");
}else if(blueCount==0 && redCount==6){
System.out.println("恭喜,中了二等奖!");
}else if(blueCount==1 && redCount==6){
System.out.println("恭喜,中了一等奖!");
}else{
System.out.println("系统出错");
}
System.out.println("本期中奖的红球号码为:");
sort(sysRedBall);
System.out.println(Arrays.toString(sysRedBall));
System.out.println("本期中奖的蓝球号码为:"+sysBlueBall);
System.out.println("您选择的红球号码为:");
sort(userRedBall);
System.out.println(Arrays.toString(userRedBall));
System.out.println("您选择的篮球号码为:"+userBlueBall);
input.close();
}
private static void sort(int[] ball) {
for(int i=0;i<ball.length-1;i++){
for(int j=0;j<ball.length-1-i;j++){
if(ball[j]>ball[j+1]){
int temp=ball[j];
ball[j]=ball[j+1];
ball[j+1]=temp;
}
}
}
}
private static void computerSelection(int[] redBall, int[] userRedBall) {
Random r=new Random();
int index=-1;
for(int i=0;i<userRedBall.length;i++){
index=r.nextInt(redBall.length-i);
userRedBall[i]=redBall[index];
int temp=redBall[index];
redBall[index]=redBall[redBall.length-1-i];
redBall[redBall.length-1-i]=temp;
}
}
}
11.文件操作,算总分
import java.util.InputMismatchException;
import java.util.Scanner;
public class Analysis {
public static double getTotalScore(String s){
Scanner scanner = new Scanner(s);
scanner.useDelimiter("[^0123456789.]+");
double totalScore=0;
while (scanner.hasNext()){
try{
double score = scanner.nextDouble();
totalScore+=score;
}catch (InputMismatchException e){
e.printStackTrace();
String t = scanner.next();
}
}
return totalScore;
}
}
import java.io.*;
import java.util.Scanner;
public class AnalysisResult {
public static void main(String[] args) {
File fRead = new File("score.txt");//文件路径
File fWrite = new File("scoreAnalysis.txt");
try {
Writer out = new FileWriter(fWrite,true);;
BufferedWriter bufferedWriter = new BufferedWriter(out);
Reader in = new FileReader(fRead);
BufferedReader bufferedReader = new BufferedReader(in);
String str=null;
while ((str=bufferedReader.readLine())!=null){
double totalScore = Analysis.getTotalScore(str);
str=str+"总分:"+totalScore;
System.out.println(str);
bufferedWriter.write(str);
bufferedWriter.newLine();
}
bufferedReader.close();
bufferedWriter.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
score.txt
姓名:张三,数学72分,物理60分,英语70分。
姓名:李四,数学92分,物理98分,英语88分。
姓名:王五,数学分68,物理80分,英语77分。
scoreAnalysis.txt
姓名:张三,数学72分,物理60分,英语70分。总分:202.0
姓名:李四,数学92分,物理98分,英语88分。总分:278.0
姓名:王五,数学分68,物理80分,英语77分。总分:225.0
12.
(1)多线程买票
package firstQ;
public class Test {
public static void main(String[] args) {
Ticket off = new Ticket();
Thread zhang, li,zhao;
zhang = new Thread(off);
zhang.setName("张某");
li = new Thread(off);
li.setName("李某");
zhao = new Thread(off);
zhao.setName("赵某");
zhang.start();
li.start();
zhao.start();
}
}
package firstQ;
public class Ticket implements Runnable{
int fiveAmount = 3;
int tenAmount = 0;
int twentyAmount = 0;
@Override
public void run() {
if (Thread.currentThread().getName().equals("张某")) {
saleTicket(20);
} else if (Thread.currentThread().getName().equals("李某")) {
saleTicket(10);
}else if(Thread.currentThread().getName().equals("赵某")){
saleTicket(5);
}
}
public synchronized void saleTicket(int money) {
if (money == 5) {
fiveAmount += 1;
System.out.println("给" + Thread.currentThread().getName() + "票," + Thread.currentThread().getName() + "的钱正好");
notifyAll();
} else if (money == 20) {
while (fiveAmount < 3) {
try {
System.out.println("\n" + Thread.currentThread().getName() + "靠边等...");
wait();
System.out.println("\n" + Thread.currentThread().getName() + "可以继续买票");
} catch (InterruptedException e) {
e.printStackTrace();
}
}
fiveAmount -= 3;
twentyAmount++;
System.out.println("给" + Thread.currentThread().getName() + "给15元,收20元");
notifyAll();
}else if(money==10){
while (fiveAmount < 1) {
try {
System.out.println("\n" + Thread.currentThread().getName() + "靠边等...");
wait();
System.out.println("\n" + Thread.currentThread().getName() + "可以继续买票");
} catch (InterruptedException e) {
e.printStackTrace();
}
}
fiveAmount -= 1;
tenAmount++;
System.out.println("给" + Thread.currentThread().getName() + "给5元,收10元");
notifyAll();
}
}
}
(2)通过interrupt方法唤醒休眠线程
package secondQ;
public class Class implements Runnable{
Thread student1,student2,teacher;
Class(){
student1 = new Thread(this);
student2 = new Thread(this);
teacher = new Thread(this);
student1.setName("student1");
student2.setName("student2");
teacher.setName("teacher");
}
@Override
public void run() {
if(Thread.currentThread()==student1){
try {
System.out.println(Thread.currentThread().getName()+"开始睡10分钟");
Thread.sleep(600000);//进入阻塞状态
} catch (InterruptedException e) {
//阻塞状态下的线程如果调用了interrupt方法则会弹出InterruptedException异常,
//通过捕获sleep时的InterruptedException异常来达到唤醒线程的目的,下同
System.out.println(student1.getName()+"被"+teacher.getName()+"叫醒");
}
System.out.println(student1.getName()+"开始上课");
student2.interrupt();//调用student2的interrupt方法来触发InterruptedException异常,被捕获后唤醒线程
}else if(Thread.currentThread()==student2){
try {
System.out.println(Thread.currentThread().getName()+"开始睡一小时");
Thread.sleep(3600000);
} catch (InterruptedException e) {
System.out.println(student2.getName()+"被"+student1.getName()+"叫醒");
}
System.out.println(student2.getName()+"开始上课");
}else if(Thread.currentThread()==teacher){
for(int i = 0;i<3;i++){
System.out.println(Thread.currentThread().getName()+"说:上课!");
}
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// e.printStackTrace();
}
student1.interrupt();//调用student1的interrupt方法来触发InterruptedException异常,被捕获后唤醒线程
}
}
}
package secondQ;
public class Test {
public static void main(String[] args) {
Class c = new Class();
c.student1.start();
c.student2.start();
c.teacher.start();
}
}
13. 满天星
import org.w3c.dom.css.RGBColor;
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class Test {
public static void main(String[] args) {
Frame win = new Frame("满天星");
win.setBounds(100,100,1024,768);
win.setBackground(Color.BLACK);
MyPanel mp = new MyPanel();
win.add(mp);
Thread m = new Thread(mp);
m.start();
win.setVisible(true);
win.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
super.windowClosing(e);
System.exit(0);
}
});
}
}
class MyPanel extends Panel implements Runnable{
int x[] = new int[300];
int y[] = new int[300];
int r[] = new int[300];
int gg[] = new int[300];
int b[] = new int[300];
public void paint(Graphics g){
//g.setColor(new Color((int)(Math.random()*255),(int)(Math.random()*255),(int)(Math.random()*255)));
g.setColor(Color.white);
for(int i = 0;i<300;i++){
g.setColor(new Color(r[i],gg[i],b[i]));
g.drawString("*",x[i],y[i]);
}
}
@Override
public void run() {
for(int i = 0;i<300;i++){
x[i]=(int)(Math.random()*1024);
y[i]=(int)(Math.random()*768);
r[i]=(int)(Math.random()*255);
gg[i]=(int)(Math.random()*255);
b[i]=(int)(Math.random()*255);
}
while (true){
repaint();
for(int i = 0;i<300;i++){
y[i]++;
}
try {
Thread.sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
for(int i = 0;i<300;i++){
if(y[i]>768){
y[i]=0;
}
}
}
}
}
14.购物券
public class MobileShop {
private int mobileAmount;
InnerPurchaseMoney purchaseMoney1;
InnerPurchaseMoney purchaseMoney2;
MobileShop(){
purchaseMoney1=new InnerPurchaseMoney(2000);
purchaseMoney2=new InnerPurchaseMoney(1000);
}
public void setMobileAmount(int m){
mobileAmount=m;
}
public int getMobileAmount(){
return mobileAmount;
}
class InnerPurchaseMoney{
int moneyValue;
InnerPurchaseMoney(int m){
moneyValue=m;
}
void buyMobile(){
if(moneyValue>=2000){
mobileAmount=mobileAmount-6;
System.out.println("用价值"+moneyValue+"的内部购物券买了6部手机");
}
else if(moneyValue<2000){
mobileAmount=mobileAmount-3;
System.out.println("用价值"+moneyValue+"的内部购物券买了3部手机");
}
}
}
}
class Demo{
public static void main(String[] args) {
MobileShop shop=new MobileShop();
shop.setMobileAmount(30);
System.out.println("专卖店目前有"+shop.getMobileAmount()+"个手机");
shop.purchaseMoney1.buyMobile();
shop.purchaseMoney2.buyMobile();
System.out.println("专卖店目前有"+shop.getMobileAmount()+"个手机");
}
}