JavaRush /Java Blog /Random-IT /Flussi e stringhe di I/O in Java
articles
Livello 15

Flussi e stringhe di I/O in Java

Pubblicato nel gruppo Random-IT
Per inserire i dati viene utilizzata una classe dalla libreria del pacchetto Java Scanner. Flussi e stringhe di I/O in Java - 1Questa classe dovrà essere importata nel programma in cui verrà utilizzata. Questo viene fatto prima che la classe pubblica inizi nel codice del programma. La classe dispone di metodi per leggere il carattere successivo di un determinato tipo dal flusso di input standard, nonché per verificare l'esistenza di tale carattere. Per lavorare con un flusso di input è necessario creare un oggetto della classe Scanner , specificando durante la creazione a quale flusso di input verrà associato. Il flusso di input standard (tastiera) in Java è rappresentato da un oggetto - System.in. E il flusso di output standard (display) è un oggetto che ti è già familiare System.out. Esiste anche un flusso standard per l'output degli errori - System.err, ma lavorarci va oltre lo scopo del nostro corso.
import java.util.Scanner; // импортируем класс
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in); // создаём an object класса Scanner
        int i = 2;
        System.out.print("Введите целое число: ");
        if(sc.hasNextInt()) { // возвращает истину если с потока ввода можно считать целое число
          i = sc.nextInt(); // считывает целое число с потока ввода и сохраняем в переменную
          System.out.println(i*2);
        } else {
          System.out.println("Вы ввели не целое число");
        }
    }
}
Il metodo hasNextDouble()applicato ad un oggetto della classe Scannerverifica se un numero reale di tipo può essere letto dallo stream di input double, e il metodo nextDouble()lo legge. Se provi a leggere un valore senza prima controllarlo, potresti ricevere un errore durante l'esecuzione del programma (il debugger non rileverà tale errore in anticipo). Ad esempio, prova a inserire un numero reale nel programma seguente:
import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        double  i = sc.nextDouble(); // если ввести букву s, то случится ошибка во время исполнения
        System.out.println(i/3);
    }
}
Esiste anche un metodo nextLine()che permette di leggere un'intera sequenza di caratteri, ad es. string, il che significa che il valore ottenuto tramite questo metodo deve essere memorizzato in un oggetto di classe String. Nell'esempio seguente, vengono creati due di questi oggetti, quindi l'input dell'utente viene scritto su di essi uno per uno, quindi sullo schermo viene visualizzata una stringa, ottenuta combinando le sequenze di caratteri immesse.
import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String s1, s2;
        s1 = sc.nextLine();
        s2 = sc.nextLine();
        System.out.println(s1 + s2);
    }
}
Esiste anche un metodo hasNext()che controlla se sono rimasti dei caratteri nel flusso di input. La classe Stringdispone di molti metodi utili che possono essere applicati alle stringhe (prima del nome del metodo indicheremo il tipo del valore che restituisce):
  1. int length()— restituisce la lunghezza della stringa (il numero di caratteri in essa contenuti);
  2. boolean isEmpty()— controlla se la stringa è vuota;
  3. String replace(a, b)— restituisce una stringa in cui il carattere a (letterale o variabile di tipo char) è sostituito dal carattere b;
  4. String toLowerCase()— restituisce una stringa in cui tutti i caratteri della stringa originale vengono convertiti in minuscolo;
  5. String toUpperCase()— restituisce una stringa in cui tutti i caratteri della stringa originale vengono convertiti in maiuscolo;
  6. boolean equals(s)— restituisce vero se la stringa a cui viene applicato il metodo corrisponde alla stringa s specificata nell'argomento del metodo (non è possibile eseguire il confronto utilizzando l' ==operatore stringa, come qualsiasi altro oggetto);
  7. int indexOf(ch)— restituisce l'indice del carattere ch in una stringa (l'indice è il numero ordinale del carattere, ma i caratteri sono numerati a partire da zero). Se il carattere non viene trovato, restituirà -1. Se un carattere appare più di una volta in una stringa, restituirà l'indice della sua prima occorrenza.
  8. int lastIndexOf(ch)- simile al metodo precedente, ma restituisce l'indice dell'ultima occorrenza se il simbolo compare più volte nella riga.
  9. int indexOf(ch,n)— restituisce l'indice del carattere ch nella stringa, ma inizia il controllo dall'indice n (l'indice è il numero ordinale del carattere, ma i caratteri sono numerati a partire da zero).
  10. char charAt(n)— restituisce il codice del carattere che si trova nella riga sotto l'indice n (l'indice è il numero di serie del carattere, ma i caratteri sono numerati a partire da zero).
public class Main {
    public static void main(String[] args) {
        String s1 = "firefox";
        System.out.println(s1.toUpperCase()); // выведет «FIREFOX»
        String s2 = s1.replace('o', 'a');
        System.out.println(s2); // выведет «firefax»
        System.out.println(s2.charAt(1)); // выведет «i»
        int i;
        i = s1.length();
        System.out.println(i); // выведет 7
        i = s1.indexOf('f');
        System.out.println(i); // выведет 0
        i = s1.indexOf('r');
        System.out.println(i); // выведет 2
        i = s1.lastIndexOf('f');
        System.out.println(i); // выведет 4
        i = s1.indexOf('t');
        System.out.println(i); // выведет -1
        i = s1.indexOf('r',3);
        System.out.println(i); // выведет -1
    }
}
Un esempio di programma che visualizzerà gli indici di tutti gli spazi in una riga inserita dall'utente dalla tastiera:
import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String s = sc.nextLine();
        for(int i=0; i < s.length(); i++) {
            if(s.charAt(i) == ' ') {
                System.out.println(i);
            }
        }
    }
}
Collegamento alla fonte: flussi e stringhe di I/O in Java
Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION