?? bankalog.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 + -