Uma classe da biblioteca de pacotes Java é usada para inserir dados
Scanner
. Esta classe deve ser importada no programa onde será utilizada. Isso é feito antes do início da classe pública no código do programa. A classe possui métodos para ler o próximo caractere de um determinado tipo do fluxo de entrada padrão, bem como para verificar a existência de tal caractere. Para trabalhar com um fluxo de entrada, você precisa criar um objeto da classe Scanner , especificando durante a criação a qual fluxo de entrada ele será associado. O fluxo de entrada padrão (teclado) em Java é representado por um objeto - System.in
. E o fluxo de saída padrão (display) é um objeto que você já conhece System.out
. Há também um fluxo padrão para saída de erros - System.err
, mas trabalhar com ele está além do escopo do nosso curso.
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("Вы ввели не целое число");
}
}
}
O método hasNextDouble()
aplicado a um objeto da classe Scanner
verifica se um número real do tipo pode ser lido no fluxo de entrada double
e o método nextDouble()
o lê. Se você tentar ler um valor sem primeiro verificá-lo, poderá obter um erro durante a execução do programa (o depurador não detectará esse erro antecipadamente). Por exemplo, tente inserir um número real no programa abaixo:
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);
}
}
Existe também um método nextLine()
que permite ler uma sequência inteira de caracteres, ou seja, string, o que significa que o valor obtido por meio deste método deve ser armazenado em um objeto de classe String
. No exemplo a seguir, dois desses objetos são criados, a entrada do usuário é gravada neles um por um e, em seguida, uma string é exibida na tela, obtida pela combinação das sequências de caracteres inseridas.
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);
}
}
Também existe um método hasNext()
que verifica se ainda há caracteres no fluxo de entrada. A classe String
possui muitos métodos úteis que podem ser aplicados a strings (antes do nome do método indicaremos o tipo do valor que ele retorna):
int length()
— retorna o comprimento da string (o número de caracteres nela);boolean isEmpty()
— verifica se a string está vazia;String replace(a, b)
— retorna uma string onde o caractere a (literal ou variável do tipo char) é substituído pelo caractere b;String toLowerCase()
— retorna uma string onde todos os caracteres da string original são convertidos em letras minúsculas;String toUpperCase()
— retorna uma string onde todos os caracteres da string original são convertidos em letras maiúsculas;boolean equals(s)
— retorna verdadeiro se a string à qual o método é aplicado corresponder à string s especificada no argumento do método (você não pode comparar usando o==
operador string, como qualquer outro objeto);int indexOf(ch)
— retorna o índice do caractere ch em uma string (o índice é o número ordinal do caractere, mas os caracteres são numerados começando do zero). Se o caractere não for encontrado, ele retornará -1. Se um caractere aparecer mais de uma vez em uma string, ele retornará o índice de sua primeira ocorrência.int lastIndexOf(ch)
- semelhante ao método anterior, mas retorna o índice da última ocorrência se o símbolo aparecer diversas vezes na linha.int indexOf(ch,n)
— retorna o índice do caractere ch na string, mas inicia a verificação a partir do índice n (o índice é o número ordinal do caractere, mas os caracteres são numerados a partir de zero).char charAt(n)
— retorna o código do caractere localizado na linha abaixo do índice n (o índice é o número de série do caractere, mas os caracteres são numerados começando do 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
}
}
Um exemplo de programa que exibirá os índices de todos os espaços em uma linha inserida pelo usuário no teclado:
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);
}
}
}
}
Link para a fonte: fluxos de E/S e strings em Java
GO TO FULL VERSION