Home > front end >  Why R is not being printed ? why the output is PQST?
Why R is not being printed ? why the output is PQST?

Time:02-06

Here's my code. Here PQRST should be the output but R is not printed. I don't understand why ?

class Validator{ public int[] studentId = { 101, 102, 103 };

public void validateStudent(int id) {
    try {
        for (int index = 0; index <= studentId.length; index  ) {
            if (id == studentId[index])
                System.out.println("P");
        }
    } finally {
        System.out.println("Q");
    }
}

}

public class Tester {
    public static void main(String[] args) {
        Validator validator = new Validator();
        try {
            validator.validateStudent(101);
            System.out.print("R");
        } catch (ArrayIndexOutOfBoundsException e) {
            System.out.println("S");
        } finally {
            System.out.println("T");
        }
    }
}

CodePudding user response:

Your code is currently throwing an ArrayIndexOutOfBoundsException. Because you exceed the length of the array. This

for (int index = 0; index <= studentId.length; index  ) {

should be

for (int index = 0; index < studentId.length; index  ) {

But then S will not be printed (because it won't throw an Exception).

Today is an excellent day to learn how to use a debugger.

CodePudding user response:

The problem is that the validateStudent method ends with an ArrayIndexOutOfBoundsException exception, and therefore the System.out.print ("R"); statement does not execute. When the exception happens.

I would probably try to solve this problem a little differently and not with exceptions, which in my opinion are quite complicated in terms of logic and processing. It simply slows down the program that could be more simple.

  •  Tags:  
  • Related