GARANTIR DESCONTO

Fórum usar EOF no java sem um arquivo #589324

29/11/2017

0

Pessoal, bom dia!

Como eu encerro um processo utilizando EOF, mas sem tem um arquivo sendo lido?
Só para vocês entenderem melhor:
Tenho um problema para resolver cujo enunciado está assim:

A entrada contém vários casos de teste e termina com EOF. Cada caso de teste consiste de uma linha contendo o número N de reclamações (0 ≤ N ≤ 100).


Ou seja, pelo que entendi, devemos ir digitando as entradas e terminar o programa quando pararmos de digitar os valores... não entendi como fazer isso! Como o sistema vai perceber que eu parei de digitar?
Frederico Silva

Frederico Silva

Responder

Posts

29/11/2017

Pablo Carvalho

Olá Frederico, tudo bem?

Acredito que as entradas não serão digitadas por você! Serão fornecidas diretamente para sua aplicação! Atualmente existem pequenos scripts que simulam essas entradas, justamente para aulas e treinamento de codificação.

O que você pode fazer, por exemplo, é o uso de um "While" para condicionar essa leitura enquanto o valor recebido não for Nulo, por exemplo:


                BufferedReader inReader;
		inReader = new BufferedReader(new InputStreamReader(System.in));

		String valor1;

		try {
			valor1 = inReader.readLine();	
			
			while (valor1 != null) {				
				// Sua implementação aqui ...
			
				valor1 = inReader.readLine();				
			}
		} catch (IOException ex) {

		}
    
}
Responder

Gostei + 0

29/11/2017

Frederico Silva

Pablo, esse eu até entendi... por se tratar de string... mas aí me deparei com este outro caso, veja o código:

		BufferedReader b = new BufferedReader(new InputStreamReader(System.in));
		int[][] m = new int[1][1];		
        String linha;
        try {
        	linha = b.readLine();
    		if ((Integer.parseInt(linha) < 3) || (Integer.parseInt(linha) > 70)) {
    			linha = b.readLine();
    		}
        	        	
        	while ((linha != null) && (!linha.equals(""))) {
				m = new int[Integer.parseInt(linha)][Integer.parseInt(linha)];
				for (int i = 0; i < Integer.parseInt(linha); i++) {
					for (int j = 0; j < Integer.parseInt(linha); j++) {
						m[i][j] = b.read();
					}
				}
				
				for (int i = 0; i < Integer.parseInt(linha); i++) {
					for (int j = 0; j < Integer.parseInt(linha); j++) {
						System.out.println(m[i][j]);
					}
				}
				
	        	linha = b.readLine();
	    		if ((Integer.parseInt(linha) < 3) || (Integer.parseInt(linha) > 70)) {
	    			linha = b.readLine();
	    		}
			}
        	
		} catch (Exception e) {

		}   


ou seja, para colocar a condição no while minha variável deve ser String, mas para digitação eu preciso de int... da forma como está aí em cima, não funcionou. O que fazer nesta situação?
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar