charAt erreur “char ne peut pas être converti en chaîne”
Je suis en train d'utiliser le code suivant, de sorte que, étant donné une chaîne de caractères, donner la longueur de la plus longue sous-suite contiguë de même caractère. J'obtiens l'erreur "incompatible types: char ne peut pas être converti en java.lang.Chaîne". J'ai commenté à l'endroit où l'erreur est d'être trouvé ci-dessous.
public class Test {
public int longestRep(String str)
{
int currLen = 1;
String currLet = "";
String maxLet = "";
int maxCount = 0;
int currPos = 0;
int strLen = str.length();
for(currPos = 0; currPos < strLen; currPos++)
{
currLet = str.charAt(currPos); //error is on this line
if(currLet = str.charAt(currPos+1))
{
currLen++;
}
else
{
if(currLen > maxLen)
{
maxLen = currLen;
maxLet = currLet;
currLen = 1;
}
}
}
}
public static void main(String args[])
{
longestRep("AaaaMmm");
}
}
C'est parce qu'un char ne peut pas être converti en Chaîne de caractères - je ne suis pas sûr de ce qu'il est de ne pas comprendre.
désolé, je suis un débutant en Java et je suis encore en apprentissage de la syntaxe, etc...
Vous pouvez changer
J'ai utilisé cette solution @MadProgrammer , mais maintenant j'ai une erreur sur la ligne suivante en disant: "incompatible types: char ne peut pas être converti en booléen"
C'est parce que
désolé, je suis un débutant en Java et je suis encore en apprentissage de la syntaxe, etc...
Vous pouvez changer
String currLet = "";
à char currLet = ' ';
et String == String
n'est pas la façon dont String
comparaison fonctionne en Java de toute façon...J'ai utilisé cette solution @MadProgrammer , mais maintenant j'ai une erreur sur la ligne suivante en disant: "incompatible types: char ne peut pas être converti en booléen"
C'est parce que
if(currLet = str.charAt(currPos+1))
- =
est une mission, pas une comparaison, vous essayez d'affecter la valeur de str.charAt(currPos+1)
à currLet
ce qui résulte en une char
, mais if
est à la recherche d'un boolean
résultat ...OriginalL'auteur Hugo Pakula | 2015-03-26
Vous devez vous connecter pour publier un commentaire.
currLet = str.charAt(currPos);
UnString
valeur ne peut pas être attribué à unchar
, ils sont de types différents, les pommes et les orangesif (currLet = str.charAt(currPos + 1)) {
est en fait une cession (fairecurrLet
égale à la valeur destr.charAt(currPos + 1)
)if (currLen > maxLen) {
-maxLen
est pas définireturn
quelque chose à partir de la méthode...Essayez de changer:
String currLet = "";
à quelque chose de plus commechar currLet = '\0';
etString maxLet = "";
àchar maxLet = '\0';
if (currLet = str.charAt(currPos + 1)) {
à quelque chose commeif (currLet == str.charAt(currPos + 1)) {
int maxLen = 0
à votre variable declerations (peut-être sousint maxCount = 0
)Maintenant, basé sur votre exemple de code,
public int longestRep(String str) {
devront êtrepublic static int longestRep(String str) {
dans l'ordre pour vous d'appeler auprès de vousmain
méthode...Mon "deviner" si vous voulez
return
maxLen
, basée sur le fait que vous la méthode est déclarée comme au retour d'uneint
. ps - Vous obtiendrez une exception d'exécution, alors soyez prêt pour un peu de débogage.Aussi, il ne te fera pas de bon de retour
maxLen
si vous jetez le résultat lorsque vous appelez votre méthode. Assurez-vous d'affecter le résultat de quelque chose, ou faire autre chose avec elle, lorsque vous appelezlongestRep
.Merci @MadProgrammer maintenant la seule erreur que j'ai est index out of range dans la deuxième ligne de la boucle for. Quel code dois-je utiliser pour éviter de sortir de gamme pour les charAt? Merci beaucoup pour toute votre aide.
Peut-être quelque chose comme
for (currPos = 0; currPos < strLen - 1; currPos++) {
. Vous aurez à faire un autre chèque pourif (currLen > maxLen) {
dans le cas où le dernier caractère est une partie de la séquence qui est plus longue que d'autre chose...OriginalL'auteur MadProgrammer
String.charAt(int)
retourne un caractère. MaiscurrLet
est de typeString
, de sorte que vous ne pouvez pas attribuer un caractère. UtilisationcurrLet = Character.toString(str.charAt(currPos));
à la place.Merci beaucoup pour cette! Maintenant j'ai l'impression d'avoir le même message d'erreur sur la ligne suivante... puis-je utiliser la même solution pour cela?
oui, il suffit de résoudre l'ensemble de ces erreurs de la même manière.
Ce n'est pas la façon dont
String
comparaison fonctionne en Java. Vous avez jeté l'OP de la casserole et sur le feu...qui est de comparer quoi que ce soit? c'est juste une solution pour la conversion d'un caractère dans une chaîne.
OriginalL'auteur Paul
Que le compilateur dit, vous ne pouvez pas convertir un
char
à unString
. Si vous avez unchar
et que vous voulez vraiment pour la convertir en uneString
de longueur 1, cela va fonctionner:ou
Toutefois, si le personnage que vous travaillez avec a été obtenue par
charAt
, une autre solution est de se débarrasser decharAt
et l'utilisationsubstring
pour renvoyer une chaîne de longueur 1:OriginalL'auteur ajb
Moyen facile de convertir en Char à Chaîne
Ajouter une Chaîne vide au début de l'expression, car l'ajout de char et de la Chaîne de résultats en Chaîne.
Convertir un char
"" + 'a'
Convertir plusieurs caractères
"" + 'a' + 'b'
De la conversion de plusieurs caractères fonctionne parce que
"" + 'a'
est évalué en premier.Si le
""
étaient à la fin au lieu de cela, vous obtenez"195"
OriginalL'auteur Dias