for循环返回到previous以进行验证

时间:2013-05-23 13:53:09

标签: java validation

我正在制作最早的截止日期算法,我需要验证。我有一个接受3个输入的for循环,例如,如果我首先输入这些值,即到达时间,爆发时间和截止时间:

5 5 10

,接下来的值是

0 1 20

我需要的是验证到达时间的第二个输入是否低于前一个输入。如果是这样,它将输出错误消息,它将再次使我能够输入第二个作业的值。它将继续这样做,直到它看到有效的输入。

for(int m=1;m<=n;m++)
{
    System.out.println("enter arrival time, burst time and deadline of process "+(m)+"(0 for none):");
    arrival[m]=sc.nextInt();
    burst[m]=sc.nextInt();
    deadline[m]=sc.nextInt();
}

2 个答案:

答案 0 :(得分:0)

将旧值(v存储在样本中)并将其与新值(示例中的vn)进行比较:

class Values {
  public final int arrival;
  public final int burst;
  public final int deadline;

  public Values(int a, int b, int d) {
    this.arrival = a;
    this.burst = b;
    this.deadline = d;
  }
}

Values v = new Values(Integer.MIN_VALUE, Integer.MIN_VALUE,
    Integer.MIN_VALUE);
Values vn;
do {
  vn = new Values(sc.nextInt(), sc.nextInt(), sc.nextInt());
} while (vn.arrival < v.arrival);

答案 1 :(得分:0)

要快速恢复,你可以做这样的事情。 假设您从控制台读取值。

int[] array = new int[2];
try {
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    for (int j = 0; j < array.length ; j++) {
            int k = Integer.parseInt(br.readLine());
            array[j] = k;
            if((j == 1) && (array[j] > array[j-1])) {
              System.out.printLn("Burst time must be lower than arrival time");
              j--;
            }

    }
 }

catch (Exception e) {
        e.printStackTrace();
 }