J'ai un exercice qui consiste à créer un programme qui lit un entier n, puis qui lit n lignes, et qui affiche la ligne la
plus longue. Par exemple :
$ java LigneLaPlusLongue
Combien de lignes ? 5
Ligne 1 ? Ceci
Ligne 2 ? est
Ligne 3 ? un
Ligne 4 ? essai
Ligne 5 ? ...
Ligne la plus longue : essai
Le problème c'est que avec ce que j'ai fait, le programme passe directement de "Ligne 1?" à "Ligne 2?" sans me laisser taper.
Voilà mon programme:
import java.util.Scanner;
class ligne{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int n; double a; double m; String lm; String l;
System.out.println("Combien de lignes ?");
n = sc.nextInt();
while (n <= 0){
System.out.println("Entrez un entier positif");
n = sc.nextInt();
}
System.out.println("Ligne 1 ?");
lm = sc.nextLine();
m = lm.length();
for (int i = 2; i<=n; i++){
System.out.println("Ligne " + i + " ?");
l = sc.nextLine();
a = l.length();
if (a >= m){
m = a;
lm = l;
}else{
m = m;
lm = lm;
}
}
System.out.println("Ligne la plus longue: " + lm);
}
}
Voilà ce que ça donne à l'execution:
Combien de lignes ?
5
Ligne 1 ?
Ligne 2 ?
est
Ligne 3 ?
un
Ligne 4 ?
essai
Ligne 5 ?
...
Ligne la plus longue: essai
Et si j'indique 1 ligne il me met directement
Combien de lignes ?
1
Ligne 1 ?
Ligne la plus longue:
Que faut il changer pour qu'il me laisse entrer la 1ère ligne?
Merci.
