java作业汇总

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()+"个手机");
    }
}

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
用来完成大作业的。文档内容: 1 Java技术体系 1.1 Java语言 1.2 Java平台 1.3 Java应用领域 2 Java语言的技术特点 2.1 1 2.2 2 2.3 3 3 Java语言与C++的异同分析总结。 4 选用C和java语言时编程算法程序有什么不同,有什么优势和劣势。 5 自己编程学习的级别和状态。以及自己以后的编程学习的计划和想法。 6 下面3道题目中选一道,给出算法分析和程序。 1)“黄金分割数”在我们的生活中很常见,但是在不同的应用领域,要求的精度也不一样。 例如:三位小数是0.618 现在我们需要你能求出保留100位小数的黄金分割数,采用的算法为“分层计算法”: 黄金数= 1 --------------- 1+ 1 ------------- 1+ 1 ----------- 1+ 1 --------- ..... 注意,计算出的结果,如果第100位为0也需要保留。 2)已知一个数列: 5,2,4,3,7,6 那么,在这个数列中存在这样一些“连续数”,例如:5,2,4,3这个子数列排序后是连续的。同样2,4,3也是连续的,为了方便表示 我们使用下标来标识,这样,这个数列中存在以下“连续数”: [1,1] [1,4] [1,6] [2,2] [2,4] [3,3] [3,4] [4,4] [5,5] [5,6] [6,6] 这样,他就存在11个“连续数”。现在需要你在用户找出一个数组中所有的“连续数”。 要求: 1、用户输入一个整数N,表示下面数组的个数 2、用户每输入一行作为一个数组 如: 用户输入: 1 5,2,4,3,7,6 程序输出: 11 3)有一种数我们称之为幸运数,它的特点是这样的,首先,由自然数按顺序排列: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 … 这样,1比较特殊, 1为第一个幸运数,那么,我们移除掉序号能被2整除的数(注意:是序号,而不是数本身,每次移除后都重新排序)就剩下: 1 3 5 7 9 11 13 15 17 19… 3为第二个幸运数,那么我们需要去掉序号能被3(下一次是除4,然后是5,每次加1)整除的数,5 11 17...剩下: 1 3 7 9 13 15 19… 那么7为第三个幸运数,后面的幸运数,依此类推,移除之后剩下的数字都是幸运数。 现在我们需要你求出给定的m和n之间的幸运数的个数: 例如:给定1 20,那么个数为:5(5个幸运数分别是1,3,7,13,19) 现在要求用户输入两个数m和n(m<n<=1000*1000),输出幸运数的个数。 例如: 用户输入: 1 20 程序输出: 5 格式:小四,1.5倍行距

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值