⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bankalog.java

📁 银行家算法,键盘输入需求量,用文本输出答案.
💻 JAVA
字号:
/*
 * Created on 2005-12-23
 * @author moonwolf
 */
import java.io.*;

public class BankAlog {
	 int j=0;
	 int amount,relax;
	 int[] need=new int[4];
	 int[] great=new int[4];
	 int[] mark=new int[4];
	 int[] order=new int[5];
	
	public boolean judge(){
		try{
				PrintWriter out=new PrintWriter(new BufferedWriter(new FileWriter("Result.txt")));
					out.println("ClientNo.           need           great");
				for(int j=0;j<4;j++){
					out.println("Client  " + (j+1) + "                 " + need[j] + "                   " + great[j] + "\n");
				}
				out.println("The available sourse's amount is: " + amount);
				if(judge1()==false){
						out.println("\nThere is noway to get a needed decition! It's a DeadLock!!!");
						out.close();
						return false;
				}
				else{
					out.println("\nThe decision's order is: "+order[0]+" "+order[1]+" "+order[2]+" "+order[3]);
					out.close();
					return true;
				}
			}catch(IOException e){
				System.err.println("End of Stream");
				return false;
		}
	}
	
	public boolean judge1(){
		
		int needamount=need[0]+need[1]+need[2]+need[3];
		if(needamount<=amount && need[0]<=great[0] && need[1]<=great[1] && need[2]<=great[2] && need[3]<=great[3])
		{
			relax=amount-needamount;
			for(int s=0;s<4;s++){
				mark[s]=-1;
			}
			return judge2(relax);
		}
		else
			return false;
	}
	public boolean judge2(int relax){
		int relaxp=relax;
		if(relaxp==amount){return true;}
		int k=0;
		for(k=0;k<4;k++){
			if(relaxp>=great[k]-need[k] && mark[k]==-1){
				relaxp=relaxp+need[k];
				mark[k]=0;
				order[j]=k+1;
				if(j<4)j++;
				judge2(relaxp);
				break;
			}
		}
		if(k==4){return false;}
		else
			return true;

	}

	public static void main(String[] args) {
		BankAlog tran=new BankAlog();
		String string="";
		System.out.print("The amount needed is:");
		BufferedReader br1 = new BufferedReader(new InputStreamReader(System.in));
		try{
			string = br1.readLine();
		}catch (IOException ex){
		System.out.println(ex);
		}
		tran.amount=Integer.parseInt(string);
		//System.out.println();
		
		for(int q=0;q<4;q++){
					System.out.print("Client"+(q+1)+"'s need of now:");
					BufferedReader br2 = new BufferedReader(new InputStreamReader(System.in));
					 try{
					   string = br2.readLine();
					 }catch (IOException ex){
					   System.out.println(ex);
					 }
					 tran.need[q]=Integer.parseInt(string);
					// System.out.println();
		}
		for(int p=0;p<4;p++){
				 	System.out.print("Client"+(p+1)+"'s greatest need:");
					BufferedReader br3 = new BufferedReader(new InputStreamReader(System.in));
					try{
					   string = br3.readLine();
					}catch (IOException ex){
					   System.out.println(ex);
					}
					tran.great[p]=Integer.parseInt(string);
					//System.out.println();
		}
		tran.judge();
		System.out.println("ClientNo.           need           great");
		for(int j=0;j<4;j++){
			System.out.println("Client  " + (j+1) + "              " + tran.need[j] + "               " + tran.great[j] + "\n");
		}
		System.out.println("The available sourse's amount is: " + tran.amount);
		if(tran.judge()==false){
				System.out.println("\nThere is noway to get a needed decition! It's a DeadLock!!!");
		}else{
			System.out.println("\nThe decision's order is: "+tran.order[0]+" "+tran.order[1]+" "+tran.order[2]+" "+tran.order[3]);
		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -