Pedro2115 Posted March 26, 2012 at 05:53 PM Report #445753 Posted March 26, 2012 at 05:53 PM 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 😄
Knitter Posted March 26, 2012 at 06:02 PM Report #445755 Posted March 26, 2012 at 06:02 PM O Eclipse não é um compilador, é um IDE. Mas indo de encontro ao teu problema, tens a certeza que o ciclo termina?
Pedro2115 Posted March 26, 2012 at 08:05 PM Author Report #445771 Posted March 26, 2012 at 08:05 PM 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 ^^
Knitter Posted March 26, 2012 at 08:18 PM Report #445775 Posted March 26, 2012 at 08:18 PM 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.
KTachyon Posted March 27, 2012 at 06:37 AM Report #445838 Posted March 27, 2012 at 06:37 AM Tecnicamente, o while nunca termina: http://docs.oracle.com/javase/1.5.0/docs/api/java/util/Scanner.html#hasNextLine() “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
brunoais Posted March 27, 2012 at 07:15 AM Report #445840 Posted March 27, 2012 at 07:15 AM http://docs.oracle.com/javase/1.5.0/docs/api/java/util/Scanner.html#hasNextLine() Cof cof: http://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html#hasNextLine() Estamos no java 6 ou 7, não no java 5. "[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%.
rumbafum Posted March 27, 2012 at 09:45 AM Report #445857 Posted March 27, 2012 at 09:45 AM Não sou entendido de Java mas a linha: in.nextLine(); não deveria ser a primeira instrução no while?
KTachyon Posted March 27, 2012 at 10:15 AM Report #445867 Posted March 27, 2012 at 10:15 AM Cof cof: http://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html#hasNextLine() Estamos no java 6 ou 7, não no java 5. 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
rumbafum Posted March 27, 2012 at 01:50 PM Report #445924 Posted March 27, 2012 at 01:50 PM 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
brunoais Posted March 27, 2012 at 02:40 PM Report #445943 Posted March 27, 2012 at 02:40 PM 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%.
rumbafum Posted March 27, 2012 at 02:48 PM Report #445952 Posted March 27, 2012 at 02:48 PM já a li 😁 o hasNextLine é o equivalente a um peek da linha seguinte portanto não mexe cursor.
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now