Prix le plus bas [Facile]

Bonjour,

Pour le challenge Prix le plus bas [Facile] disponible à cette URL :

On propose de récupérer sur chaque ligne courante disponible sur l’instance de SCANNER une chai^ne de caractères et un entier. Les deux informations sont séparées par un espace.
L’aide suggère de récupérer ces informations par les instructions :
line = sc.nextLine();
String produitCourant = line.split(" “)[0];
int prix = Integer.parseInt(line.split(” ")[1]);
Ceci fonctionne.
J’ai personnellement essayé de les récuréper avec sc.next() pour la chaîne de caractères ert sc.nextInt() avec l’entier. Cela ne fonctionnait pas. Le compte-rendu dit qu’aucune ligne n’a été trouvé.
Pour un autre exo similaire, on récupérer deux entiers d’une ligne de scanner et cette fois on pouvait les récurer chacun par la méthode de scanner sc.nextInt().

Cela signifie-t-il que lorsque le scanner lit des tokens differents sur une meme lign, on est obligé de les récupérer par la méthode line = sc.nextLine();
String produitCourant = line.split(" “)[0];
int prix = Integer.parseInt(line.split(” ")[1]);
?

Merci pour votre réponse.

Chris

I just checked and you can do:

String produitCourant = sc.next();
int prix = sc.nextInt();

it’s equivalent to:

String line = sc.nextLine();
String produitCourant = line.split(" ")[0];
int prix = Integer.parseInt(line.split(" ")[1]);

The problem comes probably for the hints that tell you do do this at the beginning:

Scanner sc = new Scanner(System.in);
int nombreProduits = sc.nextInt();
sc.nextLine();
String nomProduit = sc.nextLine();
sc.nextLine();

while actually the last sc.nextLine() should be removed!

Okay, je vois effectivement que c’est possible et je vois de meilleurs résultats. Toutefois, avec ma nouvelle méthode, je n’arrive pas à réussir un critère en particulier : ✘ Compote :apple:: expected:<[11]> but was:<[]>. Je valide toutefois les autres criteres.

Voici le code :

public void main() {

    String  P,nomProduit;

    int N, cpt=0,prixP=Integer.MAX_VALUE;

    Scanner sc = new Scanner(System.in);

    N = sc.nextInt();

    sc.nextLine();

    P = sc.nextLine();

    while(cpt < N) {

        /* Lisez les données et effectuez votre traitement */

        //line = sc.nextLine();

        nomProduit = sc.next();

        

        if(nomProduit.equals(P))

        {

            int prixNouveauP= sc.nextInt();

            if(prixNouveauP < prixP) prixP = prixNouveauP;

        }

        sc.nextLine();

        cpt++;

    }

/* Vous pouvez aussi effectuer votre traitement une fois que vous avez lu toutes les données.*/

    System.out.println(prixP);

}

Voici la meme structure que j’ai utilisé pour l’exercice bataille avec toutefois une différence sur les données à récupérer sur chaque ligne: Dans Bataille, il faut récupérer 2 entiers par ligne alors que dans Prix le plus Bas, il faut récupérer une chaine de caracteres et un entier. Voici l’url de Bataille :

Voici mon code qui fonctionne impécablement :
import java.util.*;

public class Bataille {

public void main() {

    String  line;

    int N,cpt=0,scoreA=0,scoreB=0;

    Scanner sc = new Scanner(System.in);

    N = sc.nextInt();

    sc.nextLine();

    while(cpt < N) {

        //line = sc.nextLine();

        /* Lisez les données et effectuez votre traitement */

        int carteA = sc.nextInt();

        int carteB = sc.nextInt();

        if(carteB < carteA) scoreA++;

        if(carteA < carteB) scoreB++;

        cpt++;

        sc.nextLine();

    }

/* Vous pouvez aussi effectuer votre traitement une fois que vous avez lu toutes les données.*/

System.out.println(scoreA < scoreB ? "B" : "A");

}

}

In your while loop, put

sc.nextLine();

in an else statement.
Otherwise it makes you skip a line after a matching product.

It works ! Thank you. I have a question regarding this : In case of a matching product, all the tokens have been selected and imported into a fitted input. Right after this if(), there’s sc.nextLine(). But, javadoc says nextLine() advances this scanner past the current line and returns the input that was skipped.
From what i understand, it means the scanner selects the line following the line of this matching product and returns the content of the line of the matching product whic has already been treated.

The experience confirms it’s wrong. So, why is the line following this product skipped ?

I also have encountered a problem with the exercise ROBOTS LUNAIRES :

I found 2 solutions with using an enumeration and not using an enumeration.
I did the exercise again today. I wrote the exact same solutions but it didn’t work for both solutions this time !!

Hello.
First, Codingame is an international site, and so is its community. So please post in english. (Saw you changed in your last messages, but I prefer to precise, just un case)
Secondly, each puzzle has a dedicated forum thread linked on the puzzle’s page, and in the IDE. Please use it, and don’t create a new one for asking questions on multiples puzzle. Think about people who gonna read after. (If you want to directly exchange with someone about diverse topics, there’s a “private message” function.)
And finally, you can share excerpts of not working code to ask for help, but don’t post working solutions.
I close this topic.