Jump to content

Não reconhecer parte do código


Pedro2115
 Share

Recommended Posts

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  😄

Link to comment
Share on other sites

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 ^^

Link to comment
Share on other sites

“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

Link to comment
Share on other sites

"[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%.

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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%.

Link to comment
Share on other sites

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
 Share

×
×
  • 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.