Exercise 10.1 Determine whether the following program will generate (i) compilation errors, (ii) runtime errors. If the program does not generate errors, say what it will print out; if the program generates errors, correct them and say what it will print out after the correction. Motivate your answers.
public class Exercise1 { public static void main(String[] args) { for (int i = 0, j = 0; i < 10, j < 10; i++, j++) { System.out.println(i + " + " + j + " = " + (i+j)); } System.out.println("I've printed out the sums of i and j up to " + i + "," + j); } }
Exercise 10.2 Determine whether the following program will generate (i) compilation errors, (ii) runtime errors. If the program does not generate errors, say what it will print out; if the program generates errors, correct them and say what it will print out after the correction. Motivate your answers.
public class Exercise2 { private int x = 101; private void f(int x) { x++; g(); } private void g() { System.out.println(x); } public static void main(String[] args) { Exercise2 e = new Exercise2(); int x = 200; e.f(x); } }
Exercise 10.3 Determine whether the following classes will generate (i) compilation errors, (ii) runtime errors. If the program does not generate errors, say what it will print out; if the program generates errors, correct them and say what it will print out after the correction. Motivate your answers.
public class Base { public Base() { infob = "I am an object of the Base class"; } public String getInfo() { return infob; } private String infob; } public class Derived extends Base { public Derived() { super(); infod = "I am an object of the Derived class"; } public String getInfo() { return infod + ", " + super.getInfo(); } private String infod; } public class Exercise3 { public static void main(String[] args) { Base b = new Base(); Derived d = new Derived(); System.out.println(b.getInfo()); System.out.println(d.getInfo()); b = d; System.out.println(b.getInfo()); } }
Exercise 10.4 Capture all exceptions in the following program, printing out error messages that describe the type of error that occurred.
import java.io.*; public class Exercise4 { public static void main(String[] args) { int n=10; int[] v = new int[n]; FileReader f = new FileReader("dati.txt"); BufferedReader in = new BufferedReader(f); int i=0; String linea = in.readLine(); while (linea!=null) { v[i] = Integer.parseInt(linea); linea = in.readLine(); i++; } f.close(); } }
Exercise 10.5 Solve Exercise 9.6 by handling explicitly all exceptions by printing out suitable error messages.
Exercise 10.6 Define a new exception, called ExceptionLineTooLong, that prints out the error message "The strings is too long". Write a program that reads all lines of a file and throws an exception of type ExceptionLineTooLong in the case where a string of the file is longer than 80 characters. Handle also all exceptions that could be thrown by the program.
Exercise 10.7 Write a class containing the following static methods:
Exercise 10.8 Define the exceptions that are necessary to catch the possible errors that can occur in the class Matrix of Exercise 9.9.
Modify the class Matrix in such a way that it generates the new exceptions when necessary.