Programação - Java Há diversas formas de introduzir valores num programa: - Leitura do teclado - Redireccionar o Standard Input - Passagem de argumentos - Ler de um ficheiro Leitura do teclado // importar o pacote import java.util.Scanner; … // criar uma ligação ao Standard Input Scanner teclado = new Scanner(System.in); // ler uma palavra String texto = teclado.next(); Redireccionar o Standard Input, na linha de comando com o símbolo < A consola é um ficheiro chamado con (ou con: ) que pode ser lido pelo teclado e escrito para o ecrã. c:> c:>copy con lixo.txt 213 345 645 12 345 7456 termina com: control Z no Windows e control D no Linux :) ^Z c:> c:> javac UsarHasNext.java c:> java UsarHasNext < lixo.txt Também é possível redireccionar o Standard Output, na linha de comando com o símbolo > c:> java UsarHasNext > saida.txt 235a c:> cat saida.txt //ou c:> type saida.txt mostra o conteúdo do ficheiro Total: 10 No fim escreveu:< a> c:> c:> java UsarHasNext < lixo.txt >saida.txt c:> Vitor Vaz da Silva – ISEL PG-C-1 Programação - Java Passagem de argumentos, é outro modo de entregar dados a um programa e também se faz na linha de comando, como mostra o exemplo seguinte: c:> java Soma 1 34 54 78 Total: 167 c:> java Soma 1 2 3 4 5 6 7 8 9 10 Total: 55 public class Soma{ public static void main(String [] argumentos){ int num=0; int idx=0; while( idx<argumentos.length ){ num+=Integer.parseInt(argumentos[idx]); idx++; } System.out.println("Total: "+num); } } Repare que não necessita do Scanner para ler os argumentos, porque estes são colocados numa tabela de String e passados como parâmetros do método main(String []aqui) Vitor Vaz da Silva – ISEL PG-C-2 Programação - Java Ler de um ficheiro, ou de vários é semelhante a ler do teclado, basta indicar qual o nome do ficheiro. Scanner ficheiro = new Scanner( new File (nomeDoFicherio) ); Porém para que isso se possa efectuar é necessário assegurar o seguinte: // importar os pacotes import java.io.File; import java.io.FileNotFoundException; // saber o nome do ficheiro a ser lido String nome="um ficheiro.txt"; Scanner fich=null; // criar e iniciar a variável // tentativa de abertura do ficheiro try { fich = new Scanner(new File(nome)); } catch (FileNotFoundException e) { System.out.println("Ficheiro <"+ nome +"> não existe"); } // se tudo correu bem ... if( fich!= null){ … // ficheiro aberto e para ser usado como se fosse o do teclado String palavra = fich.next(); … … … } Nota: O uso de try e catch não faz parte do programa da disciplina de PG. Vitor Vaz da Silva – ISEL PG-C-3 Programação - Java Exemplo: Um programa para ler um ficheiro e mostrá-lo no ecrã com as linhas numeradas. O nome do ficheiro é passado por argumento. import java.io.File; import java.io.FileNotFoundException; import java.util.Scanner; public class MostraFich{ public static void main(String [] arg){ Scanner fich=null; if(arg.length!=1) System.out.println("usar: java MostraFich ficheiro"); else{ try { fich = new Scanner( new File(arg[0])); } catch (FileNotFoundException e) { System.out.println("O ficheiro <"+arg[0]+"> não existe"); } } if(fich!=null){ int linha=1; while(fich.hasNextLine()){ String texto=fich.nextLine(); System.out.println(linha++ + ": "+texto); } fich.close(); // um bom hábito: fechar os ficheiros // quando já não são precisos. } } } c:> c:> copy con entrada.txt 1: Um ficheiro Um ficheiro 2: com 3 linhas com 3 linhas 3: e acaba aqui. e acaba aqui.^Z c:> c:> c:> java MostraFich con: c:> java MostraFich entrada olá O ficheiro <entrada> não existe bom dia :)^Z c:> 1: olá c:> java MostraFich entrada.txt 2: bom dia :) Vitor Vaz da Silva – ISEL PG-C-4