Jump to content

Recommended Posts

Posted

Boas!

Ora o meu problema é o seguinte eu tenho este código e ele faz-me o ciclo While direitinho mas dai para baixo ele não me reconhece nada, nem imprime nem nada, é como se o código morresse depois do ciclo while terminado.

import java.io.*;
import java.util.Scanner;
public class TesteOlimpico {
public static void main(String [] args){
	Scanner in = new Scanner(System.in);
	int flag, contador=0, i=0, contador2=0;
	String tipo [] = new String [10000];
	int ano[] = new int [10000];
	String atleta [] = new String [10000];
	String prova []= new String [10000];
	int pos [] = new int [10000];
	String paises [] = new String [10000];

	flag=in.nextInt();
	//in.nextLine();

		while(in.hasNextLine()){
			ano[i]=in.nextInt();
			prova[i]=in.next();
			tipo[i]=in.next();
			pos[i]= in.nextInt();
			atleta[i]=in.next();
			paises[i]=in.next();
			in.nextLine();
			contador2++;
			System.out.println(contador2);
			i++;
		}
		System.out.println(flag);

		if (flag == 0){
		for (int x=0; x<contador2; x++){
			if (! atleta[0].equals(atleta[x])){
				contador++;
				}
		}
		System.out.print(contador);
	}



}

}

De referir que o contador dentro do ciclo while era para ver se ele estava a funcionar, e o compilador que estou a usar é o Eclipse.

Desde já agradeço alguma ajuda  😄

Posted

Sim, o ciclo termina aquele contador2 dentro do ciclo foi mesmo para ver se ele terminava o ciclo, o esquesito é ele nao reconhecer ou não fazer o que vem depois do ciclo.

Ah e esqueci-me o input é do género:

0

2008 100m M 1 UsainBolt JAM

Em que 0 é a flag, e depois vem o ano, a prova, o género, numero de medalhas, nome do atleta e pais do atleta, só para não haver confusão ^^

Posted

Eu não sei bem o que estás a tentar fazer. O código que colocaste, com o input que deste, só para porque rebenta com erros de conversão. Da primeira vez o input exemplo funciona mas o ciclo não para adequadamente e a partir daí os dados não são lidos correctamente.

Efectua um debug para veres a execução.

Posted

“There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.”

-- Tony Hoare

Posted

"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Posted

Detalhes 😁

Não sou entendido de Java mas a linha: in.nextLine();

não deveria ser a primeira instrução no while?

A não ser que queiras limpar a linha toda... Como podes ver na documentação:

http://docs.oracle.com/javase/6/docs/api/java/util/Scanner.html#nextLine()

http://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html#nextLine()

“There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.”

-- Tony Hoare

Posted

então o hasNextLine move o cursor para a linha seguinte é isso?

é que se é assim então não precisarias do in.nextLine() no fim.

só estou a dizer isto porque lês a primeira linha que é um 0 pelo input dado e depois devias mover cursor para a próxima linha, se o hasNextLine faz isso tudo bem mas não me parece. Acho que o hasNextLine será um peek da linha a seguir. Portanto a primeira instrução deveria ser o nextLine() caso contrário está a consumir a primeira linha, linha com o 0, da primeira vez que entras no while

Posted

só estou a dizer isto porque lês a primeira linha que é um 0 pelo input dado e depois devias mover cursor para a próxima linha, se o hasNextLine faz isso tudo bem mas não me parece. Acho que o hasNextLine será um peek da linha a seguir. Portanto a primeira instrução deveria ser o nextLine() caso contrário está a consumir a primeira linha, linha com o 0, da primeira vez que entras no while

Shiii que confusão, lê a documentação antes de tirares conclusões. É importante que não tires conclusões antes de leres a documentação.

"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.