Trouve présence d'un caractère dans une chaine [Résolu]

cs_domxaline 327 Messages postés jeudi 21 août 2008Date d'inscription 10 mai 2012 Dernière intervention - 28 juil. 2009 à 17:15 - Dernière réponse : cs_domxaline 327 Messages postés jeudi 21 août 2008Date d'inscription 10 mai 2012 Dernière intervention
- 31 juil. 2009 à 08:28
bonjour
je ecris ce prg suivante

import java.util.Scanner;
public class moi
{
public static void main (String [] args)
{
String chaine="Je suis en vacances, oubliez moi un peu";
int nombreDEfois=0;
System.out.print("Entrez un caractère :");
Scanner sc=new.Scanner(System.in);
char c=sc.nextChar;
for(int i=0; i<chaine.length(); i++)
{
if(chaine.charAt(i)==c)
nombreDEfois++;
}
System.out.println("On trouve " +c+ "," +nombreDEfois+ " fois dans: " +"""+chaine+""");
}
}
en compilant il affiche error message suivant
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
Syntax error on token "new", invalid Expression

at moi.main(moi.java:9)
Afficher la suite 

Votre réponse

17 réponses

Meilleure réponse
Utilisateur anonyme - 31 juil. 2009 à 01:47
3
Merci
Salut,

je me rend compte que mes 2 réponses ci-dessus pretent à confusion:

La 1ère réponse if(chaine.charAt(i)=='c') c'était pour te montrer la syntaxe. J'aurais dû écrire if(chaine.charAt(i)== monChar), mais comme
scanner donne un String (ou une des primitives) la comparaison String/char n'est pas bonne. Il faudrait donc comparer 2 String, comment:

Avec substring et directement dans chaine:

if (chaine.substring(i, i+1).equals(c))

Ton programme devient donc:

import java.util.Scanner;
public class Moi
// ne pas oublier que par convention un nom de classe commence par une majuscule
{
public static void main (String [] args)
{
String chaine="Je suis en vacances, oubliez moi un peu";
int nombreDEfois=0;
System.out.print("Entrez un caractère :");
Scanner sc=new Scanner(System.in);
String c=sc.nextLine();
for(int i=0; i<chaine.length(); i++)
{
if (chaine.substring(i, i+1).equals(c))
{
nombreDEfois++;
}
}
System.out.println("On trouve " +c+ "," +nombreDEfois+ " fois dans: " +"""+chaine+""");
}
}

Cordialement,


...\ Dan /...

Merci Utilisateur anonyme 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 125 internautes ce mois-ci

Commenter la réponse de Utilisateur anonyme
cs_domxaline 327 Messages postés jeudi 21 août 2008Date d'inscription 10 mai 2012 Dernière intervention - 28 juil. 2009 à 20:22
0
Merci
il n'y a personne pour m'aider
Commenter la réponse de cs_domxaline
floufi 9 Messages postés jeudi 16 juillet 2009Date d'inscription 15 août 2009 Dernière intervention - 28 juil. 2009 à 21:07
0
Merci
bonjour,

il y a un point après "new" ligne 9
Commenter la réponse de floufi
cs_domxaline 327 Messages postés jeudi 21 août 2008Date d'inscription 10 mai 2012 Dernière intervention - 28 juil. 2009 à 21:51
0
Merci
même en changeant comme ça
Scanner sc=new Scanner(System.in);
ça change rien
Commenter la réponse de cs_domxaline
cs_domxaline 327 Messages postés jeudi 21 août 2008Date d'inscription 10 mai 2012 Dernière intervention - 28 juil. 2009 à 21:55
0
Merci
après avoir corrigé erreur,j'ai nouvelle message suivante

Exception in thread "main" java.lang.Error: Unresolved compilation problem:
The method nextChar() is undefined for the type Scanner
Commenter la réponse de cs_domxaline
floufi 9 Messages postés jeudi 16 juillet 2009Date d'inscription 15 août 2009 Dernière intervention - 28 juil. 2009 à 22:08
0
Merci
c'est un "nextLine" qu'il faut faire et tu recupere un "String"
Commenter la réponse de floufi
cs_domxaline 327 Messages postés jeudi 21 août 2008Date d'inscription 10 mai 2012 Dernière intervention - 28 juil. 2009 à 22:38
0
Merci
import java.util.Scanner;
public class moi
{
public static void main (String [] args)
{
String chaine="Je suis en vacances, oubliez moi un peu";
int nombreDEfois=0;
System.out.print("Entrez un caractère :");
Scanner sc=new Scanner(System.in);
String c=sc.nextLine();
for(int i=0; i<chaine.length(); i++)
{
if(chaine.charAt(i)==c)
nombreDEfois++;
}
System.out.println("On trouve " +c+ "," +nombreDEfois+ " fois dans: " +"""+chaine+""");
}
}

en compilant j'ai un message suivant
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
Incompatible operand types char and String

la ligne soulign"
if(chaine.charAt(i)==c)
avec le message incompatible operante types char and string
Commenter la réponse de cs_domxaline
floufi 9 Messages postés jeudi 16 juillet 2009Date d'inscription 15 août 2009 Dernière intervention - 28 juil. 2009 à 22:47
0
Merci
c.charAt(0) puisque c'est un String
Commenter la réponse de floufi
floufi 9 Messages postés jeudi 16 juillet 2009Date d'inscription 15 août 2009 Dernière intervention - 28 juil. 2009 à 22:49
0
Merci
c.charAt(1) étant le caractère de fin de chaine dans le cas ou un seul caractère est saisi
Commenter la réponse de floufi
Utilisateur anonyme - 29 juil. 2009 à 05:35
0
Merci
Salut,

On peut faire:

------------------
--------------------
String chaine="Je suis en vacances, oubliez moi un peu";


boolean encore = true;
int nombreDEfois=0;
String saisie = "";
String tmp = chaine;
String pasOuPlus = "Il n'y a pas de ";
int ind = 0;
//Supposons que le caractère saisi est "u" et est dans String saisie:
saisie = "u";
while (encore)
{
ind = tmp.indexOf(saisie);
if (ind == -1)
{
System.out.println("\n" + pasOuPlus + """ + saisie + "" dans la chaine:\n"
+ """ + chaine + ""\n");
break;
}
else
{
nombreDEfois++;
pasOuPlus = "Il n'y a plus de ";
tmp = tmp.substring(ind +1);
ind++;
}
}
System.out.println("RESULTAT:\n"
+ "IL Y A " + nombreDEfois + " "" + saisie + "" dans la chaine:\n"
+ """ + chaine + """);

// et on boucle sur la saisie... (qui ici n'est pas représentée)

Cordialement,



...\ Dan /...
Commenter la réponse de Utilisateur anonyme
cs_domxaline 327 Messages postés jeudi 21 août 2008Date d'inscription 10 mai 2012 Dernière intervention - 29 juil. 2009 à 08:25
0
Merci
if(chaine.charAt(i)==c)
c.charAt(1)
donc je dois ecrire comme ça
if(c.charAt(1))
toujours marche pas
"type mismatche cannot convert from char to boolean"

en demandant compil j'ai error suivant
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
Type mismatch: cannot convert from char to boolean
Commenter la réponse de cs_domxaline
Utilisateur anonyme - 29 juil. 2009 à 11:09
0
Merci
Si tu veux faire un essais avec ce code:

String chaine="Je suis en vacances, oubliez moi un peu";
String tmp = chaine;

boolean encore = true;
boolean saisir = true;
int nombreDEfois=0;
String yaPas = "Il n'y a pas de ";
int ind = 0;

String saisie = "";

InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader flux = new BufferedReader(isr);

while (saisir)
{
System.out.print("\nSaisir la lettre a compter dans la chaine"
+ " (ou intro pour terminer): ");
try
{
saisie =flux.readLine();
}
catch(IOException ioe)
{
System.err.println("Erreur: " + ioe.getMessage());
}

if (saisie.equals(""))
return;

while (encore)
{
ind = tmp.indexOf(saisie);
if (ind == -1)
{
System.out.println("\n" + yaPas + """ + saisie + "" dans la chaine:\n"
+ """ + chaine + ""\n");
break;
}
else
{
nombreDEfois++;
yaPas = "Fin de la recherche de ";
tmp = tmp.substring(ind +1);
ind++;
}
}
System.out.println("RESULTAT:\n"
+ "IL Y A " + nombreDEfois + " "" + saisie + "" dans la chaine:\n"
+ """ + chaine + """);
nombreDEfois = 0;
yaPas = "Il n'y a pas de ";
tmp = chaine;

// et on boucle sur la saisie
}

Il est maintenant complet, saisie comprise.
Si tu veux de l'aide pour comprendre n'hésite pas...

...\ Dan /...
Commenter la réponse de Utilisateur anonyme
cs_domxaline 327 Messages postés jeudi 21 août 2008Date d'inscription 10 mai 2012 Dernière intervention - 29 juil. 2009 à 21:39
0
Merci
on peut rien faire avec mon prg?
il faut ecrire un nouveau prg?
Commenter la réponse de cs_domxaline
cs_domxaline 327 Messages postés jeudi 21 août 2008Date d'inscription 10 mai 2012 Dernière intervention - 30 juil. 2009 à 22:07
0
Merci
merci pour danimo
mais excuse moi,est ce que tu peux corriger mon prg s'il te plaît
Commenter la réponse de cs_domxaline
Utilisateur anonyme - 30 juil. 2009 à 22:25
0
Merci
Salut,

remplace tout simplement:
if(chaine.charAt(i)==c)

par:



if(chaine.charAt(i)=='c')

Cordialement,

...\ Dan /...
Commenter la réponse de Utilisateur anonyme
Utilisateur anonyme - 30 juil. 2009 à 22:34
0
Merci
Ps,

Mais attention, tu dois maintenant voir pourquoi tu as toujours le même résultat >>>>>>>>> 2 !!!


...\ Dan /...
Commenter la réponse de Utilisateur anonyme
cs_domxaline 327 Messages postés jeudi 21 août 2008Date d'inscription 10 mai 2012 Dernière intervention - 31 juil. 2009 à 08:28
0
Merci
merci beaucoup
if (chaine.substring(i, i+1).equals(c))
cet ligne va bien avec mon prg
prg marche
merci beaucoup encore
Commenter la réponse de cs_domxaline

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.