L'input

Finora: i dati stavano dentro il programma.

Difetto: ogni volta che calcolo qualcosa, devo modificare il programma e compilarlo di nuovo.

Si può fare in modo che il programma sia sempre lo stesso:


JOptionPane.showInputDialog

Questo metodo:


JOptionPane: esempio

Questo programma legge una stringa, e la stampa.

import javax.swing.*;

class Prova {
    public static void main(String args[]) {
    String s;

    s=JOptionPane.showInputDialog("Dammi una stringa");

    System.out.println(s);

    System.exit(0);
  }
}

Cosa succede?

La esecuzione del programma si ferma alla invocazione del metodo.

Si apre una finestra di input.

Quello che scrivete, va a finire nella stringa s

In generale, è il valore di ritorno del metodo.


Lettura da finestra: note

import import javax.swing.*; va fatto se serve una finestra di input.

Fra virgolette viene messo il messaggio da scrivere nella finestra.

La stringa letta viene restituita come valore di ritorno del metodo.

Alla fine va fatto System.exit(0)

Si può soltanto leggere una stringa.


Perchè gli devo passare una stringa?

Il metodo showInputDialog equivale a fare una domanda, e quello che ritorna è la risposta.

Se non ci mettete la stringa fra parentesi, appare:

L'utente sa che può inserire qualcosa, ma non sa di che si tratta.

La stringa fra parentesi deve dire all'utente cosa deve inserire.


Lettura di un intero

Si legge una stringa, e si converte in intero.

La conversione si fa con il metodo Integer.parseInt

import javax.swing.*;

class InputInt {
    public static void main(String args[]) {
    String s;

    s=JOptionPane.showInputDialog("Dammi un numero");

    int x;
    x=Integer.parseInt(s);

    System.out.println(x+20);

    System.exit(0);
  }
}

Esercizio: leggere due interi e fare la somma

Si tratta di leggere due numeri interi, e di fare la somma.


Soluzione

Serve una stringa in cui mettere il risultato di OptionPane.showInputDialog

Converto il risultato in intero


Somma: programma completo

Posso anche usare la stessa stringa due volte.

Dopo aver fatto x=Integer.parseInt(s), nella variabile x c'è un numero, e quello che succede dopo ad s non cambia questo numero.

import javax.swing.*;

class Somma {
  public static void main(String args[]) {
    int x, y;
    String s;

    s=JOptionPane.showInputDialog("Dammi il primo numero");
    x=Integer.parseInt(s);

    s=JOptionPane.showInputDialog("Dammi il secondo numero");
    y=Integer.parseInt(s);

    System.out.println("Ecco il risultato");
    System.out.println(x+y);

    System.exit(0);
  }
}