Devi sapere che molti linguaggi hanno il concetto di eccezione. Anche Java lo ha e mette a disposizione il costrutto try...catch per gestire queste eccezioni, che sono situazioni anomale (ad esempio, una divisione per zero).
In Java esistono le eccezioni checked. Se utilizzi un metodo che specifica un'eccezione checked e non la gestisci, allora non è possibile portare a termine la compilazione.
Un altro modo è specificare che anche il metodo che usa il metodo che specifica l'eccezione checked, lancia quella particolare eccezione (o una superclasse dell'eccezione).
Nel tuo caso, il metodo read della classe InputStream (l'oggetto in che tu usi è di questa classe), specifica un'eccezione checked IOException.
Nel tuo sorgente, puoi fare così:
codice:
import java.io.IOException;
public class Main
{
public static void main(String[] args)
{
try
{
int a, b, s;
a=System.in.read();
b=System.in.read();
s=a+b;
System.out.println(s);
}
catch(IOException ex)
{
ex.printStackTrace();
}
}
}
Oppure così:
codice:
package desktop;
import java.io.IOException;
public class Main
{
public static void main(String[] args) throws IOException
{
int a, b, s;
a=System.in.read();
b=System.in.read();
s=a+b;
System.out.println(s);
}
}
Forse, per il momento, questo va meglio per te, almeno fino a quando non studierai la gestione delle eccezioni (ti consiglio di farlo al più presto).
Una nota sul tuo programma. Se vuoi leggere un intero, non puoi usare la read, in quanto questa legge un byte e non un numero intero.
Devi usare la classe Scanner:
codice:
package desktop;
import java.util.Scanner;
public class Main
{
public static void main(String[] args)
{
int a, b, s;
Scanner scanner = new Scanner(System.in);
a = scanner.nextInt();
b = scanner.nextInt();
s = a + b;
System.out.println(s);
}
}
Nota che il metodo nextInt non specifica eccezioni checked, quindi non è obbligatoria la gestione delle eccezioni.
Potresti avere qualche dubbio su qualche punto, quindi chiedi pure.
edit: Prova, utilizzando l'esempio che ti ho mostrato, a dare in input una cosa che non sia un intero (ad esempio puoi scriver "ciao").
Ottieni la seguente eccezione: java.util.InputMismatchException.
Questo è il classico esempio di anomalia. Il programma si aspetta un intero e l'utente gli da qualcos'altro. La gestione delle eccezioni serve proprio a questo. Gestire le situazioni anomale prevedibili.
Ad esempio, gestendo l'eccezione java.util.InputMismatchException, puoi indicare all'utente che non ha inserito un intero, esortandolo a immettere un nuovo input.
codice:
package desktop;
import java.util.Scanner;
import java.util.InputMismatchException;
public class Main
{
public static void main(String[] args) throws Exception
{
int a, b, s;
boolean ok = false;
Scanner scanner = new Scanner(System.in);
while(!ok)
{
try
{
System.out.print("a = ");
a = scanner.nextInt();
System.out.print("b = ");
b = scanner.nextInt();
s = a + b;
System.out.println(s);
ok = true;
}
catch(InputMismatchException ex)
{
System.out.println("Non hai inserito un intero, ripeti");
if(scanner.hasNext()) // scarto tutti i caratteri nel buffer di input
scanner.next();
}
}
}
}