usar EOF no java sem um arquivo

Java

29/11/2017

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

Curtidas 0

Respostas

Pablo Carvalho

Pablo Carvalho

29/11/2017

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) {

		}
    
}
GOSTEI 0
Frederico Silva

Frederico Silva

29/11/2017

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?
GOSTEI 0
POSTAR