Problema com retorno e chamada

2 respostas
D
class LineReaderExp {

	public static int main(String[] args) throws Exception {
		LineNumberReader lineCounter = new LineNumberReader(
				new InputStreamReader(new FileInputStream("entrada.txt")));
		String nextLine = null;

		try {
			while ((nextLine = lineCounter.readLine()) != null) {
				if (nextLine == null)
					break;
				System.out.println(nextLine);
			}
			System.out.println("Total de linhas " + lineCounter.getLineNumber());
			 return int x = lineCounter.getLineNumber();
					} catch (Exception done) {
			done.printStackTrace();
		} 
	}
}
Olá.. eu denovo.. hehe Pois é, criei 2 classes, uma pra ler um arquivo txt, e vou fazer um for pra ele ler as condições de cada linha.. esse é pra ler qts linhas tem no arquivo txt. Aí vou fazer a chamada dele no outro metodo, mas tá dando um erro, quero retornar a variavel x q armazena a qtd de linhas do txt. Mas aparece o seguinte erro:
ReadWithScanner.java:24: '.class' expected
			 return int x = lineCounter.getLineNumber();
			            ^
ReadWithScanner.java:24: illegal start of expression
			 return int x = lineCounter.getLineNumber();
			              ^
ReadWithScanner.java:24: ';' expected
			 return int x = lineCounter.getLineNumber();
			                           ^
3 errors

.-----------.

xP
O q tó fazendo de errado?
Obrigado.. novamente.. xD

2 Respostas

gpellizzoni

Meu amigo, há diversos problemas:

  1. return dentro de try, exclusivamente. Você precisa ter return fora de blocos condicionais (while, try, if) porque, como o nome já diz, eles são condicionais: podem não acontecer.
  2. Método main(String[] args) com retorno do tipo int (imagino que esse seja o ponto de partida do seu programa; nesse caso, é necessário não haver retorno (void)).
  3. while ((nextLine = lineCounter.readLine()) != null) não entendi o que isto quer dizer no contexto de condição para um while. Você quer atribuir o retorno de readLine() a nextLine ou comparar os dois?
  4. return int x = lineCounter.getLineNumber() isto está errado. Deve-se utilizar return lineCounter.getLineNumber().

Edit: problemas com formatação.

D

Uhm.. ok

obgao
Vou arrumar agora e já volto.. hehe

while ((nextLine = lineCounter.readLine()) != null) não entendi o que isto quer dizer no contexto de condição para um while. Você quer atribuir o retorno de readLine() a nextLine ou comparar os dois?
Eu quero atribuir, mas realmente n faz sentido algum.. melhor assim:

while ((lineCounter.readLine()) != null) {
				if (lineCounter.readLine() == null)
					break;
				System.out.println(lineCounter.readLine());
			}

Uhm, eu vou usar esse contador de linhas numa classe q tá abaixo dela, vou usar o retorno e colocar ele num for pra ele redirecionar o comando, linha por linha q já tá pronto.

Mas agora acho q tá errado, a chamada tem que ser na outra classe, q deve ser a principal, essa deveria ser só uma classe com um retorno.

vou usar o retorno num for antes do 1° if:

Scanner scanner = new Scanner(aLine);
    scanner.useDelimiter(" ");
    if ( scanner.hasNext() ){
      String name = scanner.next();
					
			if(name.equals("CONSULTAR")){
				String value = scanner.next();
				String value2 = scanner.next();
				log("Metodo: " + quote(name.trim()) + ", : " + quote(value.trim()) + quote(value2.trim()) );

				int valor = Integer.parseInt("value");
				int valor2 = Integer.parseInt("value2");
			
			}else if(name.equals("INSERIR")){
				String value = scanner.next();
				String value2 = scanner.next();
...

:)
Só mais uma perguntinha.. como eu consigo armazenar o retorno numa variavel em outra classe, pensei em criar um objeto da 1° classe na segunda, mas como ela n tem atributo e n recebe parametros... acho q n dá..
:?

Criado 15 de agosto de 2011
Ultima resposta 16 de ago. de 2011
Respostas 2
Participantes 2