main函数调用问题

hann_sann 2011-11-30
package cn.edu.nciae.diskmanage;

import java.util.Scanner;

/**
* 用于管理磁道调度,进行操作选择
*
* @author pcz
*
*/
public class DiskManage {
public static void main(String[] args) {

/**
* 变量数组a用于存放要访问的磁道, a[0]用于存放初始磁头的位置
*/
int[] a = new int[20];

/**
* 用来统计请求磁盘调度的I/O请求数目
*/
int n = 0;

/**
* 判断用户的算法选择
*/
int m = 0;
/**
* 创建一个FCFS的对象
*/
FCFS fcfs = new FCFS();
SSTF sstf = new SSTF();
SCAN scan = new SCAN();
CSCAN cscan = new CSCAN();
Logic logic = new Logic();
a[0] = 100;
a[1] = 55;
a[2] = 58;
a[3] = 39;
a[4] = 18;
a[5] = 90;
a[6] = 160;
a[7] = 150;
a[8] = 38;
a[9] = 184;
n = 9;
// int[] b = new int[20] ;
// for (int i = 0; i < b.length; i++) {
// b[i] = logic.getRandom(1, 200);
// System.out.println(b[i]);
// }
// System.out.println("请输入磁盘请求的个数:");
// try {
// Scanner reader = new Scanner(System.in);
// n = reader.nextInt();
// } catch (Exception e) {
// }
// System.out.println("请输入磁盘请求序列:");
// Scanner reader = new Scanner(System.in);
// for (int i = 1; i <= n; i++) {
// try {
// a[i] = reader.nextInt();
// } catch (Exception e) {
// }
//
// }
// System.out.println("请输入磁头的初始位置:");
// try {
// Scanner re = new Scanner(System.in);
// a[0] = re.nextInt();
// } catch (Exception e) {
// }
// a = logic.Choose(a, n);

System.out.println("磁头的初始位置为" + a[0]);
System.out.println("磁盘I/O请求表");
System.out.println("编号" + "\t" + "欲访问磁道");
for (int i = 1; i <= n; i++) {
System.out.println(i + "\t" + a[i]);
}
System.out.println();

while (m != -1) {
m = logic.Show();
switch (m) {
case 1:
fcfs.Check(a, n);
break;
case 2:
sstf.Check(a, n);
break;
case 3:
scan.Check(a, n);
break;
case 4:
cscan.Check(a, n);
break;
default:
System.out.println("谢谢使用!");
System.exit(0);
}
}
}
}


--------------------------------------------------------------------------------------------------------------------------------

package cn.edu.nciae.diskmanage;

import java.util.Scanner;

public class Logic {
/**
* 选择界面 返回相应的选项
*
* @return m
*/
public int Show() {
int m = 0;
System.out.println("********************************************");
System.out.println("提示:磁头的序列范围1~200!磁头从小号到大号寻道!");
System.out.println("请输入相应的选择操作::");
System.out.println("1、先来先服务算法(FCFS)");
System.out.println("2、最短寻道时间优先算法(SSTF)");
System.out.println("3、扫描算法(SCAN)");
System.out.println("4、循环扫描算法(CSCAN)");
System.out.println("5、退出 ");
Scanner read = new Scanner(System.in);
try {
m = read.nextInt();
} catch (Exception e) {
}
read.close();
return m;
}

public int[] Choose(int[] a, int n) {
int m = 0;
System.out.println("*************请选择磁盘序列产生方式********************");
System.out.println("请输入相应的选择操作::");
System.out.println("1、手动输入磁道序列");
System.out.println("2、随机生成磁道序列");
System.out.println("请输入您的操作:");
Scanner read = new Scanner(System.in);
try {
m = read.nextInt();
} catch (Exception e) {
}
read.close();
switch (m) {
case 1:
{
Scanner reader = new Scanner(System.in);
    for (int i = 1; i <=n; i++) {
    try {
    a[i] = reader.nextInt();
    } catch (Exception e) {
    }
    }
    break;
}
case 2:
    {
   for (int i = 1; i <=n; i++) {
       a[i] = getRandom(1, 200);
   System.out.print(a[i] + "\t");
   }
System.out.println();
break;
     }
}
System.out.println("请输入磁头的初始位置:");
try {
Scanner re = new Scanner(System.in);
a[0] = re.nextInt();
} catch (Exception e) {
}
return a;
}

/**
* @param start
* @param end
* @return >= start && <=end 的随机数 end需大于start 否则返回-1
*
*/
public  int getRandom(int start, int end) {
if (start > end || start < 0 || end < 0) {
return -1;
}
return (int) (Math.random() * (end - start + 1)) + start;
}
}

其中logic.Show()只能调用一次 求解
QQ 1214253526
Global site tag (gtag.js) - Google Analytics